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

Canonical source: https://maguyva.ai/el/languages/kotlin

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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

## Στιγμιότυπο υποστήριξης

- Επίπεδο: Υποστήριξη AST και συμβόλων
- Προγραμματισμός
- Επεκτάσεις: .kt, .kts
- Πραγματική ανάλυση AST για αναζήτηση με επίγνωση σύνταξης και δομικό πλαίσιο.
- Τα επώνυμα σύμβολα τροφοδοτούν τη σημασιολογική αναζήτηση και τη διασταύρωση αναφορών. Η πλοήγηση στον γράφο είναι διαθέσιμη όταν είναι ενεργοποιημένη η εξαγωγή σχέσεων.
- Αυτή η γλώσσα συνεισφέρει σύμβολα και σχέσεις στην αναζήτηση με επίγνωση του γράφου· οι υποστηριζόμενοι τύποι ακμών διαφέρουν ανάλογα με τις εγγενείς δομές της.
- Διατίθενται τόσο ανάλυση AST όσο και εξαγωγή συμβόλων.

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

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

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

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

## Πού σκοντάφτουν τα επιφανειακά εργαλεία 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`.

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

Συνδέστε ένα αποθετήριο με τον [γρήγορο οδηγό εκκίνησης](/el/docs/quickstart) και έπειτα δείτε τον πίνακα υποστήριξης στη [σελίδα συμβατότητας](/el/docs/compatibility). Για μικτές βάσεις κώδικα, διαβάστε και τον [οδηγό για τη Java](/el/languages/java).

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

- Η υποστήριξη 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` έως τον πελάτη δικτύου».
