Lumaktaw papunta sa content
cd /languages
  • JVM ngayon
  • Programming
  • Support para sa AST at mga simbolo

Kotlin sa Maguyva: mga code graph para sa Android at JVM

Sinusuportahan ng Maguyva ang Kotlin gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga class, extension function at coroutine sa Android at JVM code.

Saan nalilito ang mababaw na AI tool sa Kotlin

Maikli ang Kotlin dahil itinatago nito ang wiring. Binabago ng apply, let, also, run at with ang ibig sabihin ng this at it. Nagdadagdag ang mga extension function ng behavior sa mga type na naka-define sa ibang lugar. Inililipat ng mga coroutine ang trabaho sa pagitan ng launch, async at withContext. Nakikita ng agent na isang file lang ang binabasa sa bawat pagkakataon ang mga call, pero hindi ang mga receiver sa likod nila.

Mas malaking bahagi ng structure na ito ang nire-resolve ng Maguyva sa oras ng pag-index, para maitanong ng agent kung sino ang tumatawag sa isang function at makuha ang totoong sagot.

Ano ang kinukuha ng Maguyva mula sa Kotlin

Sakop ng Maguyva ang .kt at .kts. Kinukuha ang mga function, class, object at companion object, at itinatala ng mga function signature ang mga extension receiver, pangalan ng parameter, default value at vararg parameter.

Pinapanatili ng mga call relationship ang mga class-qualified na pangalan, kaya hindi naghahalo ang OrderRepository.save at ibang save. Sinusundan ng receiver typing ang this sa loob ng apply at run, ang it sa loob ng let at also, at ang argument ng with, kaya nare-resolve sa tamang type ang mga call sa loob ng mga scope function. Sadyang pinapanatili sa graph ang mga coroutine builder at Flow operator (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel).

Itinatala rin ng graph ang inheritance, interface implementation, override, instantiation, mga annotation, type reference, read at write, at mga edge ng pag-throw at pag-catch ng exception.

Mga halimbawang agent prompt

  • “Sino ang tumatawag sa CheckoutUseCase.invoke, at mula sa aling mga ViewModel?” (find_symbol, tapos dependency_search na incoming)
  • “I-trace ang sync flow mula sa SyncWorker hanggang sa network client.” (get_task_context)
  • “Aling mga class ang nag-i-implement ng PaymentGateway?” (dependency_search)

Mga kilalang limitasyon

  • Mga 250 Kotlin standard-library at platform call ang nifi-filter mula sa mga relationship, kaya hindi graph edge ang mga helper tulad ng listOf, map, filter at println. Gamitin ang text_pattern_search para sa mga iyon.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Para sa mga halo-halong codebase, basahin din ang gabay sa Java.

Pinakabagay

  • > Mga Android team na may malalaking multi-module na app, kung saan nagtatawagan ang mga ViewModel, repository at use case lampas sa hangganan ng mga module.
  • > Server-side Kotlin at mga Kotlin/JVM service na pinaghahalo ang Kotlin at mas lumang Java code.
  • > Mga Gradle build na isinulat sa Kotlin script (`.kts`) na kailangang basahin ng mga agent kasama ng application code.

Mga workflow ng agent

  • > Hanapin ang bawat tumatawag sa isang repository o use-case class bago magbago ang API nito.
  • > I-trace ang isang coroutine flow mula sa `launch` ng ViewModel, dumaan sa `withContext`, hanggang sa data layer.
  • > I-map ang mga class na nag-i-implement ng isang interface o nag-o-override ng base method bago mag-refactor.

Mga detalye ng engine

  • > Sakop ng Kotlin support ang `.kt` at `.kts`. Itinatala ng mga signature ang mga extension receiver, pangalan ng parameter, default value at `vararg` parameter.
  • > Sinusundan ng receiver typing ang `this` sa `apply` at `run`, ang `it` sa `let` at `also`, at ang argument ng `with`, at pinapanatili ng mga call ang mga class-qualified na pangalan.
  • > Nananatili sa graph ang mga coroutine builder at Flow operator tulad ng `launch`, `withContext` at `flow`, habang mga 250 standard-library call ang nifi-filter.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin para sa isang class, use case o extension function kapag kailangan mo ang definition at mga reference.

  • dependency_search

    Bago magbago ang API, gumamit ng incoming traversal sa isang repository o interface para makita ang mga tumatawag at implementation.

  • get_task_context

    Gamitin para sa mga prompt tulad ng “i-trace ang sync flow mula sa `SyncWorker` hanggang sa network client”.