# Kotlin in Maguyva: grafi del codice per Android e JVM

Canonical source: https://maguyva.ai/it/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 supporta Kotlin con AST, simboli e grafo, così gli agenti IA seguono classi, funzioni di estensione e coroutine nel codice Android e JVM.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Programmazione
- Estensioni: .kt, .kts
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- Team Android con grandi app multimodulo in cui ViewModel, repository e use case si chiamano tra moduli.
- Kotlin lato server e servizi Kotlin/JVM che mescolano Kotlin con codice Java più vecchio.
- Build Gradle scritte in Kotlin script (`.kts`) che gli agenti devono leggere insieme al codice applicativo.

## Workflow degli agenti

- Trovare tutti i chiamanti di una classe repository o use case prima di cambiarne l'API.
- Tracciare un flusso di coroutine dal `launch` di un ViewModel, attraverso `withContext`, fino al livello dati.
- Mappare quali classi implementano un'interfaccia o ridefiniscono un metodo base prima di un refactoring.

## Dove Kotlin fa inciampare gli strumenti di IA superficiali

Kotlin è conciso perché nasconde i collegamenti. `apply`, `let`, `also`, `run` e `with` cambiano il significato di `this` e `it`. Le funzioni di estensione aggiungono comportamento a tipi definiti altrove. Le coroutine spostano il lavoro tra `launch`, `async` e `withContext`. Un agente che legge un file alla volta vede le chiamate, ma non i receiver che ci stanno dietro.

Maguyva risolve più di questa struttura già in fase di indicizzazione, così un agente può chiedere chi chiama una funzione e ottenere la risposta vera.

## Cosa estrae Maguyva in Kotlin

Maguyva copre `.kt` e `.kts`. Vengono estratti funzioni, classi, object e companion object, e le firme delle funzioni registrano receiver di estensione, nomi dei parametri, valori predefiniti e parametri `vararg`.

Le relazioni di chiamata mantengono i nomi qualificati dalla classe, così `OrderRepository.save` resta distinto da un altro `save`. La tipizzazione dei receiver segue `this` dentro `apply` e `run`, `it` dentro `let` e `also`, e l'argomento di `with`, così le chiamate dentro le scope function si risolvono nel tipo giusto. I builder di coroutine e gli operatori Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) restano di proposito nel grafo.

Il grafo registra anche ereditarietà, implementazione di interfacce, override, istanziazione, annotazioni, riferimenti di tipo, letture e scritture, e archi di lancio e cattura delle eccezioni.

## Esempi di prompt per agenti

- "Chi chiama `CheckoutUseCase.invoke` e da quali ViewModel?" (`find_symbol`, poi `dependency_search` incoming)
- "Traccia il flusso di sincronizzazione da `SyncWorker` al client di rete." (`get_task_context`)
- "Quali classi implementano `PaymentGateway`?" (`dependency_search`)

## Limiti noti

- Circa 250 chiamate della libreria standard di Kotlin e della piattaforma vengono filtrate dalle relazioni, quindi helper come `listOf`, `map`, `filter` e `println` non sono archi del grafo. Usa `text_pattern_search` per trovarli.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto nella [pagina di compatibilità](/it/docs/compatibility). Per basi di codice miste, leggi anche la [guida a Java](/it/languages/java).

## Dettagli del motore

- Il supporto a Kotlin copre `.kt` e `.kts`. Le firme registrano receiver di estensione, nomi dei parametri, valori predefiniti e parametri `vararg`.
- La tipizzazione dei receiver segue `this` in `apply` e `run`, `it` in `let` e `also`, e l'argomento di `with`, e le chiamate mantengono i nomi qualificati dalla classe.
- I builder di coroutine e gli operatori Flow come `launch`, `withContext` e `flow` restano nel grafo, mentre circa 250 chiamate della libreria standard vengono filtrate.

## Punti di ingresso MCP utili

- `find_symbol`: Usalo con una classe, uno use case o una funzione di estensione quando ti servono definizione e riferimenti.
- `dependency_search`: Usa la navigazione incoming su un repository o un'interfaccia per vedere chiamanti e implementazioni prima di cambiare un'API.
- `get_task_context`: Usalo per prompt come "traccia il flusso di sincronizzazione da `SyncWorker` al client di rete".
