# Kotlin di Maguyva: graf kode untuk Android dan JVM

Canonical source: https://maguyva.ai/id/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 mendukung Kotlin dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri kelas, fungsi ekstensi, dan coroutine dalam kode Android dan JVM.

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .kt, .kts
- Parsing AST sungguhan untuk pencarian sadar-syntax dan konteks struktural.
- Simbol bernama menggerakkan pencarian semantik dan cross-reference. Navigasi graf tersedia saat ekstraksi relasi diaktifkan.
- Bahasa ini menyumbangkan simbol dan relasi ke pencarian berbasis graf; jenis edge yang didukung bervariasi sesuai konstruk bawaan bahasa tersebut.
- Parsing AST dan ekstraksi simbol sama-sama tersedia.

## Paling cocok untuk

- Tim Android dengan aplikasi multimodul yang besar, tempat ViewModel, repository, dan use case saling memanggil lintas batas modul.
- Kotlin sisi server dan layanan Kotlin/JVM yang memadukan Kotlin dengan kode Java yang lebih lama.
- Build Gradle yang ditulis dalam skrip Kotlin (`.kts`), yang perlu dibaca agen bersama kode aplikasi.

## Workflow agent

- Menemukan setiap pemanggil kelas repository atau use case sebelum API-nya berubah.
- Menelusuri alur coroutine dari `launch` di ViewModel, melalui `withContext`, hingga lapisan data.
- Memetakan kelas yang mengimplementasikan interface atau meng-override metode dasar sebelum refactor.

## Di mana Kotlin menjebak alat AI yang dangkal

Kotlin ringkas karena menyembunyikan pengkabelannya. `apply`, `let`, `also`, `run`, dan `with` mengubah arti `this` dan `it`. Fungsi ekstensi menambahkan perilaku ke tipe yang didefinisikan di tempat lain. Coroutine memindahkan pekerjaan antara `launch`, `async`, dan `withContext`. Agen yang membaca satu berkas setiap kali melihat panggilannya, tetapi tidak melihat receiver di baliknya.

Maguyva menyelesaikan lebih banyak struktur ini saat pengindeksan, sehingga agen dapat bertanya siapa yang memanggil sebuah fungsi dan mendapatkan jawaban yang sebenarnya.

## Apa yang diekstrak Maguyva dari Kotlin

Maguyva mencakup `.kt` dan `.kts`. Fungsi, kelas, object, dan companion object diekstrak, dan signature fungsi mencatat receiver ekstensi, nama parameter, nilai default, dan parameter `vararg`.

Relasi panggilan mempertahankan nama yang dikualifikasi kelas, sehingga `OrderRepository.save` tidak tercampur dengan `save` lain. Penentuan tipe receiver mengikuti `this` di dalam `apply` dan `run`, `it` di dalam `let` dan `also`, serta argumen `with`, sehingga panggilan di dalam scope function diselesaikan ke tipe yang benar. Builder coroutine dan operator Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) sengaja dipertahankan dalam graf.

Graf juga mencatat pewarisan, implementasi interface, override, instansiasi, anotasi, referensi tipe, pembacaan dan penulisan, serta edge throw dan catch eksepsi.

## Contoh prompt agen

- "Siapa yang memanggil `CheckoutUseCase.invoke`, dan dari ViewModel mana?" (`find_symbol`, lalu `dependency_search` arah masuk)
- "Telusuri alur sinkronisasi dari `SyncWorker` ke klien jaringan." (`get_task_context`)
- "Kelas mana yang mengimplementasikan `PaymentGateway`?" (`dependency_search`)

## Batasan yang diketahui

- Sekitar 250 panggilan pustaka standar dan platform Kotlin difilter dari relasi, sehingga helper seperti `listOf`, `map`, `filter`, dan `println` bukan edge graf. Gunakan `text_pattern_search` untuk itu.

## Langkah berikutnya

Hubungkan repositori dengan [panduan memulai cepat](/id/docs/quickstart), lalu periksa matriks dukungan di [halaman kompatibilitas](/id/docs/compatibility). Untuk basis kode campuran, baca juga [panduan Java](/id/languages/java).

## Detail engine

- Dukungan Kotlin mencakup `.kt` dan `.kts`. Signature mencatat receiver ekstensi, nama parameter, nilai default, dan parameter `vararg`.
- Penentuan tipe receiver mengikuti `this` dalam `apply` dan `run`, `it` dalam `let` dan `also`, serta argumen `with`, dan panggilan mempertahankan nama yang dikualifikasi kelas.
- Builder coroutine dan operator Flow seperti `launch`, `withContext`, dan `flow` tetap ada di graf, sedangkan sekitar 250 panggilan pustaka standar difilter.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk kelas, use case, atau fungsi ekstensi saat Anda membutuhkan definisi dan referensi.
- `dependency_search`: Sebelum perubahan API, gunakan penelusuran arah masuk pada repository atau interface untuk melihat pemanggil dan implementasi.
- `get_task_context`: Gunakan untuk prompt seperti “telusuri alur sinkronisasi dari `SyncWorker` ke klien jaringan”.
