# Kotlin no Maguyva: grafos de código para Android e JVM

Canonical source: https://maguyva.ai/pt-br/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).

O Maguyva oferece suporte a Kotlin com AST, símbolos e grafo, para que agentes de IA sigam classes, funções de extensão e coroutines em código Android e JVM.

## Panorama de suporte

- Nível: Suporte a AST e símbolos
- Programação
- Extensões: .kt, .kts
- Parsing real de AST para busca com consciência de sintaxe e contexto estrutural.
- Símbolos nomeados alimentam a busca semântica e as referências cruzadas. A navegação por grafo fica disponível quando a extração de relações está habilitada.
- Esta linguagem fornece símbolos e relações para a busca orientada por grafo; os tipos de aresta compatíveis variam de acordo com seus construtos nativos.
- A análise de AST e a extração de símbolos estão disponíveis.

## Uso ideal

- Equipes Android com grandes apps multimódulo em que ViewModels, repositórios e casos de uso se chamam entre módulos.
- Kotlin no servidor e serviços Kotlin/JVM que misturam Kotlin com código Java mais antigo.
- Builds Gradle escritos em Kotlin script (`.kts`) que os agentes precisam ler junto com o código da aplicação.

## Fluxos de trabalho de agente

- Encontrar todos os chamadores de uma classe de repositório ou de caso de uso antes de mudar sua API.
- Rastrear um fluxo de coroutines do `launch` de um ViewModel, passando por `withContext`, até a camada de dados.
- Mapear quais classes implementam uma interface ou sobrescrevem um método base antes de uma refatoração.

## Onde Kotlin derruba ferramentas de IA superficiais

Kotlin é conciso porque esconde a fiação. `apply`, `let`, `also`, `run` e `with` mudam o que `this` e `it` significam. Funções de extensão acrescentam comportamento a tipos definidos em outro lugar. Coroutines movem o trabalho entre `launch`, `async` e `withContext`. Um agente que lê um arquivo por vez vê as chamadas, mas não os receivers por trás delas.

O Maguyva resolve mais dessa estrutura na indexação, para que um agente possa perguntar quem chama uma função e receber a resposta real.

## O que o Maguyva extrai em Kotlin

O Maguyva cobre `.kt` e `.kts`. Funções, classes, objetos e companion objects são extraídos, e as assinaturas de funções registram receivers de extensão, nomes de parâmetros, valores padrão e parâmetros `vararg`.

As relações de chamada preservam nomes qualificados pela classe, então `OrderRepository.save` continua distinto de outro `save`. A tipagem de receivers segue `this` dentro de `apply` e `run`, `it` dentro de `let` e `also`, e o argumento de `with`, para que chamadas dentro de scope functions sejam resolvidas para o tipo certo. Builders de coroutines e operadores de Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) são mantidos de propósito no grafo.

O grafo também registra herança, implementação de interfaces, sobrescritas, instanciação, anotações, referências de tipo, leituras e escritas, e arestas de lançamento e captura de exceções.

## Exemplos de prompts para agentes

- "Quem chama `CheckoutUseCase.invoke` e a partir de quais ViewModels?" (`find_symbol`, depois `dependency_search` incoming)
- "Rastreie o fluxo de sincronização de `SyncWorker` até o cliente de rede." (`get_task_context`)
- "Quais classes implementam `PaymentGateway`?" (`dependency_search`)

## Limitações conhecidas

- Cerca de 250 chamadas da biblioteca padrão do Kotlin e da plataforma são filtradas das relações, então helpers como `listOf`, `map`, `filter` e `println` não são arestas do grafo. Use `text_pattern_search` para encontrá-los.

## Próximos passos

Conecte um repositório pelo [início rápido](/pt-br/docs/quickstart) e depois confira a matriz de suporte na [página de compatibilidade](/pt-br/docs/compatibility). Para bases de código mistas, leia também o [guia de Java](/pt-br/languages/java).

## Detalhes do motor

- O suporte a Kotlin cobre `.kt` e `.kts`. As assinaturas registram receivers de extensão, nomes de parâmetros, valores padrão e parâmetros `vararg`.
- A tipagem de receivers segue `this` em `apply` e `run`, `it` em `let` e `also`, e o argumento de `with`, e as chamadas preservam nomes qualificados pela classe.
- Builders de coroutines e operadores de Flow como `launch`, `withContext` e `flow` ficam no grafo, enquanto cerca de 250 chamadas da biblioteca padrão são filtradas.

## Pontos de entrada MCP úteis

- `find_symbol`: Use com uma classe, caso de uso ou função de extensão quando precisar da definição e das referências.
- `dependency_search`: Use a travessia incoming em um repositório ou interface para ver chamadores e implementações antes de mudar uma API.
- `get_task_context`: Use para prompts como "rastreie o fluxo de sincronização de `SyncWorker` até o cliente de rede".
