# Kotlin i Maguyva: kodegrafer til Android og JVM

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

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .kt, .kts
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- Android-teams med store multimodul-apps, hvor ViewModels, repositories og use cases kalder hinanden på tværs af moduler.
- Kotlin på serversiden og Kotlin/JVM-tjenester, der blander Kotlin med ældre Java-kode.
- Gradle-builds skrevet i Kotlin script (`.kts`), som agenter skal læse sammen med applikationskoden.

## Agent-arbejdsgange

- Finde alle, der kalder en repository- eller use case-klasse, før dens API ændres.
- Spore et coroutine-flow fra en ViewModels `launch` via `withContext` ind i datalaget.
- Kortlægge, hvilke klasser der implementerer et interface eller overskriver en basismetode, før en refaktorering.

## Hvor Kotlin får overfladiske AI-værktøjer til at snuble

Kotlin er kortfattet, fordi det skjuler forbindelser. `apply`, `let`, `also`, `run` og `with` ændrer, hvad `this` og `it` betyder. Extension functions tilføjer adfærd til typer, der er defineret et andet sted. Coroutines flytter arbejde mellem `launch`, `async` og `withContext`. En agent, der læser én fil ad gangen, ser kaldene, men ikke modtagerne bag dem.

Maguyva løser mere af den struktur allerede ved indekseringen, så en agent kan spørge, hvem der kalder en funktion, og få det rigtige svar.

## Hvad Maguyva udtrækker i Kotlin

Maguyva dækker `.kt` og `.kts`. Funktioner, klasser, objekter og companion objects udtrækkes, og funktionssignaturer registrerer extension receivers, parameternavne, standardværdier og `vararg`-parametre.

Kaldrelationer bevarer klassekvalificerede navne, så `OrderRepository.save` holdes adskilt fra en anden `save`. Modtagertypningen følger `this` inde i `apply` og `run`, `it` inde i `let` og `also` samt argumentet til `with`, så kald i scope functions opløses til den rigtige type. Coroutine-buildere og Flow-operatorer (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) bevares med vilje i grafen.

Grafen registrerer også nedarvning, interfaceimplementering, overskrivninger, instansiering, annotationer, typereferencer, læsninger og skrivninger samt kanter for at kaste og fange undtagelser.

## Eksempler på prompts til agenter

- "Hvem kalder `CheckoutUseCase.invoke`, og fra hvilke ViewModels?" (`find_symbol`, derefter `dependency_search` incoming)
- "Spor synkroniseringsflowet fra `SyncWorker` til netværksklienten." (`get_task_context`)
- "Hvilke klasser implementerer `PaymentGateway`?" (`dependency_search`)

## Kendte begrænsninger

- Omkring 250 kald i Kotlins standardbibliotek og platform filtreres fra relationerne, så hjælpefunktioner som `listOf`, `map`, `filter` og `println` er ikke kanter i grafen. Brug `text_pattern_search` til dem.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). Ved blandede kodebaser kan du også læse [guiden til Java](/da/languages/java).

## Motordetaljer

- Kotlin-understøttelsen dækker `.kt` og `.kts`. Signaturer registrerer extension receivers, parameternavne, standardværdier og `vararg`-parametre.
- Modtagertypningen følger `this` i `apply` og `run`, `it` i `let` og `also` samt argumentet til `with`, og kald bevarer klassekvalificerede navne.
- Coroutine-buildere og Flow-operatorer som `launch`, `withContext` og `flow` bliver i grafen, mens omkring 250 kald i standardbiblioteket filtreres fra.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til en klasse, en use case eller en extension function, når du har brug for definitionen og referencerne.
- `dependency_search`: Brug incoming-gennemløb på et repository eller interface før en API-ændring for at se kaldere og implementeringer.
- `get_task_context`: Brug det til prompts som "spor synkroniseringsflowet fra `SyncWorker` til netværksklienten".
