# Kotlin dalam Maguyva: graf kod untuk Android dan JVM

Canonical source: https://maguyva.ai/ms/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 menyokong Kotlin dengan AST, simbol dan graf, supaya ejen AI boleh menjejak kelas, fungsi sambungan dan coroutine dalam kod Android dan JVM.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Pengaturcaraan
- Sambungan fail: .kt, .kts
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Pasukan Android dengan aplikasi berbilang modul yang besar, tempat ViewModel, repository dan use case saling memanggil merentas sempadan modul.
- Kotlin sebelah pelayan dan perkhidmatan Kotlin/JVM yang menggabungkan Kotlin dengan kod Java yang lebih lama.
- Binaan Gradle yang ditulis dalam skrip Kotlin (`.kts`), yang perlu dibaca oleh ejen bersama kod aplikasi.

## Aliran kerja ejen

- Mencari setiap pemanggil kelas repository atau use case sebelum API-nya berubah.
- Menjejak aliran coroutine daripada `launch` dalam ViewModel, melalui `withContext`, hingga ke lapisan data.
- Memetakan kelas yang melaksanakan antara muka atau menggantikan kaedah asas sebelum pemfaktoran semula.

## Di mana Kotlin memerangkap alat AI yang cetek

Kotlin ringkas kerana ia menyembunyikan pendawaian. `apply`, `let`, `also`, `run` dan `with` mengubah maksud `this` dan `it`. Fungsi sambungan menambah tingkah laku pada jenis yang ditakrifkan di tempat lain. Coroutine memindahkan kerja antara `launch`, `async` dan `withContext`. Ejen yang membaca satu fail pada satu masa nampak panggilan itu, tetapi tidak nampak penerima di belakangnya.

Maguyva menyelesaikan lebih banyak struktur ini semasa pengindeksan, supaya ejen boleh bertanya siapa yang memanggil sesuatu fungsi dan mendapat jawapan yang sebenar.

## Apa yang diekstrak oleh Maguyva daripada Kotlin

Maguyva meliputi `.kt` dan `.kts`. Fungsi, kelas, object dan companion object diekstrak, dan tandatangan fungsi merekodkan penerima sambungan, nama parameter, nilai lalai dan parameter `vararg`.

Hubungan panggilan mengekalkan nama yang dilayakkan dengan kelas, jadi `OrderRepository.save` tidak bercampur dengan `save` yang lain. Penentuan jenis penerima mengikut `this` di dalam `apply` dan `run`, `it` di dalam `let` dan `also`, serta argumen `with`, jadi panggilan di dalam scope function diselesaikan kepada jenis yang betul. Pembina coroutine dan operator Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) sengaja dikekalkan dalam graf.

Graf juga merekodkan pewarisan, pelaksanaan antara muka, penggantian, penginstansian, anotasi, rujukan jenis, bacaan dan tulisan, serta tepi lontaran dan tangkapan pengecualian.

## Contoh gesaan ejen

- "Siapa yang memanggil `CheckoutUseCase.invoke`, dan daripada ViewModel mana?" (`find_symbol`, kemudian `dependency_search` arah masuk)
- "Jejaki aliran penyegerakan daripada `SyncWorker` ke klien rangkaian." (`get_task_context`)
- "Kelas mana yang melaksanakan `PaymentGateway`?" (`dependency_search`)

## Had yang diketahui

- Kira-kira 250 panggilan pustaka standard dan platform Kotlin ditapis daripada hubungan, jadi pembantu seperti `listOf`, `map`, `filter` dan `println` bukan tepi graf. Gunakan `text_pattern_search` untuknya.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Untuk pangkalan kod bercampur, baca juga [panduan Java](/ms/languages/java).

## Butiran enjin

- Sokongan Kotlin meliputi `.kt` dan `.kts`. Tandatangan merekodkan penerima sambungan, nama parameter, nilai lalai dan parameter `vararg`.
- Penentuan jenis penerima mengikut `this` dalam `apply` dan `run`, `it` dalam `let` dan `also`, serta argumen `with`, dan panggilan mengekalkan nama yang dilayakkan dengan kelas.
- Pembina coroutine dan operator Flow seperti `launch`, `withContext` dan `flow` kekal dalam graf, manakala kira-kira 250 panggilan pustaka standard ditapis.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk kelas, use case atau fungsi sambungan apabila anda memerlukan definisi dan rujukan.
- `dependency_search`: Sebelum perubahan API, gunakan penjelajahan arah masuk pada repository atau antara muka untuk melihat pemanggil dan pelaksanaan.
- `get_task_context`: Gunakan untuk gesaan seperti “jejaki aliran penyegerakan daripada `SyncWorker` ke klien rangkaian”.
