Μετάβαση στο περιεχόμενο
cd /languages
  • Σύγχρονη JVM
  • Προγραμματισμός
  • Υποστήριξη AST και συμβόλων

Kotlin στο Maguyva: γράφοι κώδικα για Android και JVM

Το Maguyva υποστηρίζει Kotlin με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να παρακολουθούν κλάσεις, συναρτήσεις επέκτασης και συρρουτίνες σε κώδικα Android και JVM.

Πού σκοντάφτουν τα επιφανειακά εργαλεία AI στην Kotlin

Η Kotlin είναι συνοπτική επειδή κρύβει τις διασυνδέσεις. Τα apply, let, also, run και with αλλάζουν τι σημαίνουν τα this και it. Οι συναρτήσεις επέκτασης προσθέτουν συμπεριφορά σε τύπους που ορίζονται αλλού. Οι συρρουτίνες μετακινούν τη δουλειά ανάμεσα σε launch, async και withContext. Ένας πράκτορας που διαβάζει ένα αρχείο τη φορά βλέπει τις κλήσεις, αλλά όχι τους δέκτες πίσω τους.

Το Maguyva επιλύει μεγαλύτερο μέρος αυτής της δομής ήδη κατά την ευρετηρίαση, ώστε ένας πράκτορας να ρωτήσει ποιος καλεί μια συνάρτηση και να πάρει την πραγματική απάντηση.

Τι εξάγει το Maguyva από την Kotlin

Το Maguyva καλύπτει .kt και .kts. Εξάγονται συναρτήσεις, κλάσεις, αντικείμενα και συνοδευτικά αντικείμενα, και οι υπογραφές συναρτήσεων καταγράφουν δέκτες επέκτασης, ονόματα παραμέτρων, προεπιλεγμένες τιμές και παραμέτρους vararg.

Οι σχέσεις κλήσεων διατηρούν ονόματα με προσδιορισμό κλάσης, ώστε το OrderRepository.save να ξεχωρίζει από ένα άλλο save. Η τυποποίηση δεκτών ακολουθεί το this μέσα σε apply και run, το it μέσα σε let και also, καθώς και το όρισμα του with, ώστε οι κλήσεις μέσα σε συναρτήσεις εμβέλειας να επιλύονται στον σωστό τύπο. Οι δομητές συρρουτινών και οι τελεστές Flow (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) διατηρούνται σκόπιμα στον γράφο.

Ο γράφος καταγράφει επίσης κληρονομικότητα, υλοποίηση διεπαφών, επικαλύψεις, δημιουργία στιγμιοτύπων, annotations, αναφορές τύπων, αναγνώσεις και εγγραφές, καθώς και ακμές ρίψης και σύλληψης εξαιρέσεων.

Παραδείγματα προτροπών για πράκτορες

  • «Ποιος καλεί το CheckoutUseCase.invoke και από ποια ViewModels;» (find_symbol, μετά dependency_search incoming)
  • «Παρακολούθησε τη ροή συγχρονισμού από το SyncWorker έως τον πελάτη δικτύου.» (get_task_context)
  • «Ποιες κλάσεις υλοποιούν το PaymentGateway;» (dependency_search)

Γνωστοί περιορισμοί

  • Περίπου 250 κλήσεις της τυπικής βιβλιοθήκης της Kotlin και της πλατφόρμας φιλτράρονται από τις σχέσεις, οπότε βοηθητικές συναρτήσεις όπως listOf, map, filter και println δεν είναι ακμές του γράφου. Για αυτές χρησιμοποιήστε το text_pattern_search.

Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πίνακα υποστήριξης στη σελίδα συμβατότητας. Για μικτές βάσεις κώδικα, διαβάστε και τον οδηγό για τη Java.

Ιδανική χρήση

  • > Ομάδες Android με μεγάλες εφαρμογές πολλών αρθρωμάτων, όπου ViewModels, αποθετήρια και περιπτώσεις χρήσης καλούν το ένα το άλλο πέρα από τα όρια των αρθρωμάτων.
  • > Kotlin στον διακομιστή και υπηρεσίες Kotlin/JVM που συνδυάζουν Kotlin με παλαιότερο κώδικα Java.
  • > Μεταγλωττίσεις Gradle γραμμένες σε σενάρια Kotlin (`.kts`), που οι πράκτορες πρέπει να διαβάζουν μαζί με τον κώδικα της εφαρμογής.

Ροές εργασίας πρακτόρων

  • > Εύρεση όλων όσων καλούν μια κλάση αποθετηρίου ή περίπτωσης χρήσης πριν αλλάξει το API της.
  • > Παρακολούθηση μιας ροής συρρουτινών από το `launch` ενός ViewModel, μέσω του `withContext`, έως το επίπεδο δεδομένων.
  • > Χαρτογράφηση των κλάσεων που υλοποιούν ένα interface ή επικαλύπτουν μια βασική μέθοδο πριν από μια αναδιαμόρφωση.

Λεπτομέρειες μηχανής

  • > Η υποστήριξη Kotlin καλύπτει `.kt` και `.kts`. Οι υπογραφές καταγράφουν δέκτες επέκτασης, ονόματα παραμέτρων, προεπιλεγμένες τιμές και παραμέτρους `vararg`.
  • > Η τυποποίηση δεκτών ακολουθεί το `this` σε `apply` και `run`, το `it` σε `let` και `also` και το όρισμα του `with`, ενώ οι κλήσεις διατηρούν ονόματα με προσδιορισμό κλάσης.
  • > Οι δομητές συρρουτινών και οι τελεστές Flow, όπως `launch`, `withContext` και `flow`, παραμένουν στον γράφο, ενώ περίπου 250 κλήσεις της τυπικής βιβλιοθήκης φιλτράρονται.

Χρήσιμα σημεία εισόδου MCP

  • find_symbol

    Χρησιμοποιήστε το για μια κλάση, μια περίπτωση χρήσης ή μια συνάρτηση επέκτασης όταν χρειάζεστε τον ορισμό και τις αναφορές.

  • dependency_search

    Πριν από μια αλλαγή API, χρησιμοποιήστε διάσχιση incoming σε ένα repository ή interface για να δείτε καλούντες και υλοποιήσεις.

  • get_task_context

    Χρησιμοποιήστε το για προτροπές όπως «παρακολούθησε τη ροή συγχρονισμού από το `SyncWorker` έως τον πελάτη δικτύου».