# Kotlin i Maguyva: kodgrafer för Android och JVM

Canonical source: https://maguyva.ai/sv/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öder Kotlin med AST, symboler och graf, så att AI-agenter kan följa klasser, extension functions och coroutines i Android- och JVM-kod.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .kt, .kts
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- Android-team med stora flermodulsappar där ViewModels, repositories och use cases anropar varandra över moduler.
- Kotlin på serversidan och Kotlin/JVM-tjänster som blandar Kotlin med äldre Java-kod.
- Gradle-byggen skrivna i Kotlin script (`.kts`) som agenter behöver läsa tillsammans med applikationskoden.

## Agentarbetsflöden

- Hitta alla som anropar en repository- eller use case-klass innan dess API ändras.
- Spåra ett coroutine-flöde från en ViewModels `launch` via `withContext` in i datalagret.
- Kartlägga vilka klasser som implementerar ett gränssnitt eller skriver över en basmetod före en refaktorering.

## Där Kotlin får ytliga AI-verktyg att snubbla

Kotlin är kortfattat eftersom det döljer kopplingar. `apply`, `let`, `also`, `run` och `with` ändrar vad `this` och `it` betyder. Extension functions lägger till beteende på typer som definieras någon annanstans. Coroutines flyttar arbete mellan `launch`, `async` och `withContext`. En agent som läser en fil i taget ser anropen men inte mottagarna bakom dem.

Maguyva löser mer av den strukturen redan vid indexeringen, så att en agent kan fråga vem som anropar en funktion och få det verkliga svaret.

## Vad Maguyva extraherar i Kotlin

Maguyva täcker `.kt` och `.kts`. Funktioner, klasser, objekt och companion objects extraheras, och funktionssignaturer registrerar extension receivers, parameternamn, standardvärden och `vararg`-parametrar.

Anropsrelationer behåller klasskvalificerade namn, så `OrderRepository.save` hålls isär från en annan `save`. Mottagartypningen följer `this` inuti `apply` och `run`, `it` inuti `let` och `also` samt argumentet till `with`, så att anrop i scope functions löses till rätt typ. Coroutine-byggare och Flow-operatorer (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) behålls avsiktligt i grafen.

Grafen registrerar också arv, gränssnittsimplementation, överskrivningar, instansiering, annoteringar, typreferenser, läsningar och skrivningar samt kanter för att kasta och fånga undantag.

## Exempel på prompter för agenter

- "Vem anropar `CheckoutUseCase.invoke`, och från vilka ViewModels?" (`find_symbol`, sedan `dependency_search` incoming)
- "Spåra synkflödet från `SyncWorker` till nätverksklienten." (`get_task_context`)
- "Vilka klasser implementerar `PaymentGateway`?" (`dependency_search`)

## Kända begränsningar

- Omkring 250 anrop i Kotlins standardbibliotek och plattform filtreras bort ur relationerna, så hjälpfunktioner som `listOf`, `map`, `filter` och `println` är inte kanter i grafen. Använd `text_pattern_search` för dem.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). För blandade kodbaser, läs även [guiden för Java](/sv/languages/java).

## Motordetaljer

- Kotlin-stödet täcker `.kt` och `.kts`. Signaturer registrerar extension receivers, parameternamn, standardvärden och `vararg`-parametrar.
- Mottagartypningen följer `this` i `apply` och `run`, `it` i `let` och `also` samt argumentet till `with`, och anrop behåller klasskvalificerade namn.
- Coroutine-byggare och Flow-operatorer som `launch`, `withContext` och `flow` stannar i grafen, medan omkring 250 anrop i standardbiblioteket filtreras bort.

## Användbara MCP-ingångar

- `find_symbol`: Använd det för en klass, ett use case eller en extension function när du behöver definitionen och referenserna.
- `dependency_search`: Använd incoming-traversering på ett repository eller gränssnitt före en API-ändring för att se anropare och implementationer.
- `get_task_context`: Använd det för prompter som "spåra synkflödet från `SyncWorker` till nätverksklienten".
