Naar inhoud springen
cd /languages
  • Moderne JVM
  • Programmeren
  • AST- en symboolondersteuning

Kotlin in Maguyva: codegrafen voor Android en de JVM

Maguyva ondersteunt Kotlin met AST, symbolen en graaf, zodat AI-agents klassen, extension functions en coroutines volgen in Android- en JVM-code.

Waar Kotlin oppervlakkige AI-tools laat struikelen

Kotlin is beknopt omdat het bedrading verbergt. apply, let, also, run en with veranderen wat this en it betekenen. Extension functions hangen gedrag aan types die elders zijn gedefinieerd. Coroutines verplaatsen werk via launch, async en withContext. Een agent die één bestand tegelijk leest, ziet de aanroepen maar niet de receivers erachter.

Maguyva lost een groter deel van die structuur al bij het indexeren op, zodat een agent kan vragen wie een functie aanroept en het echte antwoord krijgt.

Wat Maguyva in Kotlin extraheert

Maguyva dekt .kt en .kts. Functies, klassen, objects en companion objects worden geëxtraheerd, en functiesignaturen leggen extension receivers, parameternamen, standaardwaarden en vararg-parameters vast.

Aanroeprelaties behouden klasse-gekwalificeerde namen, zodat OrderRepository.save te onderscheiden blijft van een andere save. Receivertypering volgt this binnen apply en run, it binnen let en also, en het argument van with, zodat aanroepen in scope functions naar het juiste type worden opgelost. Coroutine-builders en Flow-operatoren (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) blijven bewust in de graaf.

De graaf legt ook overerving vast, interface-implementatie, overrides, instantiëring, annotaties, typeverwijzingen, lees- en schrijfacties, en randen voor het gooien en afvangen van exceptions.

Voorbeeldprompts voor agents

  • “Wie roept CheckoutUseCase.invoke aan, en vanuit welke ViewModels?” (find_symbol, daarna dependency_search incoming)
  • “Volg de syncflow van SyncWorker tot de netwerkclient.” (get_task_context)
  • “Welke klassen implementeren PaymentGateway?” (dependency_search)

Bekende beperkingen

  • Ongeveer 250 aanroepen uit de Kotlin-standaardbibliotheek en het platform worden uit de relaties gefilterd, dus helpers zoals listOf, map, filter en println zijn geen randen in de graaf. Gebruik daarvoor text_pattern_search.

Volgende stappen

Koppel een repository via de snelstart en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Lees bij gemengde codebases ook de Java-gids.

Beste toepassing

  • > Android-teams met grote multimodule-apps waarin ViewModels, repositories en use cases elkaar over modules heen aanroepen.
  • > Server-side Kotlin en Kotlin/JVM-services die Kotlin combineren met oudere Java-code.
  • > Gradle-builds in Kotlin script (`.kts`) die agents samen met de applicatiecode moeten lezen.

Agentworkflows

  • > Elke aanroeper van een repository- of use-caseklasse vinden voordat de API verandert.
  • > Een coroutineflow volgen vanaf de `launch` in een ViewModel via `withContext` tot in de datalaag.
  • > Vóór een refactoring in kaart brengen welke klassen een interface implementeren of een basismethode overschrijven.

Enginedetails

  • > Kotlin-ondersteuning dekt `.kt` en `.kts`. Signaturen leggen extension receivers, parameternamen, standaardwaarden en `vararg`-parameters vast.
  • > Receivertypering volgt `this` in `apply` en `run`, `it` in `let` en `also`, en het argument van `with`, en aanroepen behouden klasse-gekwalificeerde namen.
  • > Coroutine-builders en Flow-operatoren zoals `launch`, `withContext` en `flow` blijven in de graaf, terwijl ongeveer 250 aanroepen uit de standaardbibliotheek worden gefilterd.

Nuttige MCP-instappunten

  • find_symbol

    Gebruik het voor een klasse, use case of extension function wanneer je de definitie en verwijzingen nodig hebt.

  • dependency_search

    Gebruik vóór een API-wijziging incoming-traversal op een repository of interface om aanroepers en implementaties te zien.

  • get_task_context

    Gebruik het voor prompts zoals "volg de syncflow van `SyncWorker` tot de netwerkclient".