# Kotlin dans Maguyva : des graphes de code pour Android et la JVM

Canonical source: https://maguyva.ai/fr/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 prend en charge Kotlin avec AST, symboles et graphe, pour que les agents IA suivent classes, fonctions d'extension et coroutines dans le code Android et JVM.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .kt, .kts
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les équipes Android avec de grandes applications multimodules où ViewModels, repositories et cas d'usage s'appellent d'un module à l'autre.
- Le Kotlin côté serveur et les services Kotlin/JVM qui mêlent Kotlin et code Java plus ancien.
- Les builds Gradle écrits en script Kotlin (`.kts`) que les agents doivent lire avec le code applicatif.

## Workflows d'agent

- Trouver tous les appelants d'une classe de repository ou de cas d'usage avant d'en changer l'API.
- Suivre un flux de coroutines depuis le `launch` d'un ViewModel, via `withContext`, jusqu'à la couche de données.
- Cartographier les classes qui implémentent une interface ou surchargent une méthode de base avant un refactoring.

## Là où Kotlin fait trébucher les outils d'IA superficiels

Kotlin est concis parce qu'il cache le câblage. `apply`, `let`, `also`, `run` et `with` changent ce que désignent `this` et `it`. Les fonctions d'extension ajoutent du comportement à des types définis ailleurs. Les coroutines déplacent le travail entre `launch`, `async` et `withContext`. Un agent qui lit un fichier à la fois voit les appels, mais pas les receveurs qui se trouvent derrière.

Maguyva résout une plus grande partie de cette structure dès l'indexation, pour qu'un agent puisse demander qui appelle une fonction et obtenir la vraie réponse.

## Ce que Maguyva extrait en Kotlin

Maguyva couvre `.kt` et `.kts`. Les fonctions, classes, objets et objets compagnons sont extraits, et les signatures de fonctions enregistrent les receveurs d'extension, les noms de paramètres, les valeurs par défaut et les paramètres `vararg`.

Les relations d'appel conservent les noms qualifiés par la classe, si bien que `OrderRepository.save` reste distinct d'un autre `save`. Le typage des receveurs suit `this` dans `apply` et `run`, `it` dans `let` et `also`, ainsi que l'argument de `with`, pour que les appels dans les fonctions de portée se résolvent vers le bon type. Les constructeurs de coroutines et les opérateurs Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) sont conservés volontairement dans le graphe.

Le graphe enregistre aussi l'héritage, l'implémentation d'interfaces, les surcharges, l'instanciation, les annotations, les références de type, les lectures et écritures, ainsi que les arêtes de levée et de capture d'exceptions.

## Exemples de prompts pour agents

- « Qui appelle `CheckoutUseCase.invoke`, et depuis quels ViewModels ? » (`find_symbol`, puis `dependency_search` en incoming)
- « Retrace le flux de synchronisation de `SyncWorker` jusqu'au client réseau. » (`get_task_context`)
- « Quelles classes implémentent `PaymentGateway` ? » (`dependency_search`)

## Limites connues

- Environ 250 appels de la bibliothèque standard Kotlin et de la plateforme sont filtrés des relations ; des helpers comme `listOf`, `map`, `filter` et `println` ne sont donc pas des arêtes du graphe. Utilisez `text_pattern_search` pour les retrouver.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Pour les bases de code mixtes, lisez aussi le [guide Java](/fr/languages/java).

## Détails du moteur

- La prise en charge de Kotlin couvre `.kt` et `.kts`. Les signatures enregistrent receveurs d'extension, noms de paramètres, valeurs par défaut et paramètres `vararg`.
- Le typage des receveurs suit `this` dans `apply` et `run`, `it` dans `let` et `also`, et l'argument de `with`, et les appels conservent les noms qualifiés par la classe.
- Les constructeurs de coroutines et opérateurs Flow comme `launch`, `withContext` et `flow` restent dans le graphe, tandis qu'environ 250 appels de la bibliothèque standard sont filtrés.

## Points d'entrée MCP utiles

- `find_symbol`: Utilisez-le pour une classe, un cas d'usage ou une fonction d'extension quand vous avez besoin de la définition et des références.
- `dependency_search`: Utilisez la traversée incoming sur un repository ou une interface pour voir appelants et implémentations avant un changement d'API.
- `get_task_context`: Utilisez-le pour des prompts comme « retrace le flux de synchronisation de `SyncWorker` jusqu'au client réseau ».
