Langkau ke kandungan
cd /languages
  • JVM masa kini
  • Pengaturcaraan
  • Sokongan AST dan simbol

Kotlin dalam Maguyva: graf kod untuk Android dan JVM

Maguyva menyokong Kotlin dengan AST, simbol dan graf, supaya ejen AI boleh menjejak kelas, fungsi sambungan dan coroutine dalam kod Android dan JVM.

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, kemudian semak matriks sokongan di halaman keserasian. Untuk pangkalan kod bercampur, baca juga panduan Java.

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.

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”.