# Kotlin i Maguyva: kodegrafer for Android og JVM

Canonical source: https://maguyva.ai/nb/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 støtter Kotlin med AST, symboler og graf, slik at AI-agenter kan følge klasser, extension functions og coroutines i Android- og JVM-kode.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .kt, .kts
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- Android-team med store flermodulsapper der ViewModels, repositorier og use cases kaller hverandre på tvers av moduler.
- Kotlin på serversiden og Kotlin/JVM-tjenester som blander Kotlin med eldre Java-kode.
- Gradle-bygg skrevet i Kotlin script (`.kts`) som agenter må lese sammen med applikasjonskoden.

## Agent-arbeidsflyter

- Finne alle som kaller en repository- eller use case-klasse før API-et endres.
- Spore en coroutine-flyt fra `launch` i en ViewModel via `withContext` inn i datalaget.
- Kartlegge hvilke klasser som implementerer et grensesnitt eller overstyrer en basismetode før en refaktorering.

## Der Kotlin får overfladiske AI-verktøy til å snuble

Kotlin er konsist fordi det skjuler koblinger. `apply`, `let`, `also`, `run` og `with` endrer hva `this` og `it` betyr. Extension functions legger atferd til typer som er definert et annet sted. Coroutines flytter arbeid mellom `launch`, `async` og `withContext`. En agent som leser én fil om gangen, ser kallene, men ikke mottakerne bak dem.

Maguyva løser mer av denne strukturen allerede ved indeksering, slik at en agent kan spørre hvem som kaller en funksjon og få det riktige svaret.

## Hva Maguyva henter ut i Kotlin

Maguyva dekker `.kt` og `.kts`. Funksjoner, klasser, objekter og companion objects hentes ut, og funksjonssignaturer registrerer extension receivers, parameternavn, standardverdier og `vararg`-parametere.

Kallrelasjoner beholder klassekvalifiserte navn, så `OrderRepository.save` holdes adskilt fra en annen `save`. Mottakertypingen følger `this` inne i `apply` og `run`, `it` inne i `let` og `also` samt argumentet til `with`, slik at kall i scope functions løses til riktig type. Coroutine-byggere og Flow-operatorer (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) beholdes med vilje i grafen.

Grafen registrerer også arv, grensesnittimplementasjon, overstyringer, instansiering, annoteringer, typereferanser, lesinger og skrivinger samt kanter for å kaste og fange unntak.

## Eksempler på prompter for agenter

- «Hvem kaller `CheckoutUseCase.invoke`, og fra hvilke ViewModels?» (`find_symbol`, deretter `dependency_search` incoming)
- «Spor synkroniseringsflyten fra `SyncWorker` til nettverksklienten.» (`get_task_context`)
- «Hvilke klasser implementerer `PaymentGateway`?» (`dependency_search`)

## Kjente begrensninger

- Rundt 250 kall i Kotlins standardbibliotek og plattform filtreres ut av relasjonene, så hjelpefunksjoner som `listOf`, `map`, `filter` og `println` er ikke kanter i grafen. Bruk `text_pattern_search` for dem.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). For blandede kodebaser bør du også lese [veiledningen for Java](/nb/languages/java).

## Motordetaljer

- Kotlin-støtten dekker `.kt` og `.kts`. Signaturer registrerer extension receivers, parameternavn, standardverdier og `vararg`-parametere.
- Mottakertypingen følger `this` i `apply` og `run`, `it` i `let` og `also` samt argumentet til `with`, og kall beholder klassekvalifiserte navn.
- Coroutine-byggere og Flow-operatorer som `launch`, `withContext` og `flow` blir værende i grafen, mens rundt 250 kall i standardbiblioteket filtreres ut.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Bruk det for en klasse, en use case eller en extension function når du trenger definisjonen og referansene.
- `dependency_search`: Bruk incoming-traversering på et repository eller grensesnitt før en API-endring for å se kallere og implementasjoner.
- `get_task_context`: Bruk det til prompter som «spor synkroniseringsflyten fra `SyncWorker` til nettverksklienten».
