# Kotlin у Maguyva: графи коду для Android і JVM

Canonical source: https://maguyva.ai/uk/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 підтримує Kotlin з AST, символами та графом, щоб ШІ-агенти відстежували класи, функції-розширення й корутини в коді Android і JVM.

## Знімок підтримки

- Рівень: Підтримка AST і символів
- Програмування
- Розширення: .kt, .kts
- Справжній розбір AST для пошуку з урахуванням синтаксису та структурного контексту.
- Іменовані символи забезпечують семантичний пошук і перехресні посилання. Навігація графом доступна, коли ввімкнено видобування зв’язків.
- Ця мова додає символи та зв’язки до пошуку з урахуванням графа; підтримувані типи ребер залежать від притаманних їй конструкцій.
- Доступні як розбір AST, так і видобування символів.

## Найкраще підходить

- Android-команди з великими багатомодульними застосунками, де ViewModel, репозиторії та сценарії використання викликають одне одного між модулями.
- Серверний Kotlin і сервіси на Kotlin/JVM, де Kotlin співіснує зі старим кодом на Java.
- Збірки Gradle на скриптах Kotlin (`.kts`), які агентам треба читати разом із кодом застосунку.

## Робочі процеси агента

- Знайти всіх, хто викликає клас репозиторію чи сценарію використання, перш ніж змінювати його API.
- Простежити потік корутин від `launch` у ViewModel через `withContext` до шару даних.
- Перед рефакторингом скласти карту класів, що реалізують інтерфейс або перевизначають базовий метод.

## Де Kotlin збиває з пантелику поверхові ШІ-інструменти

Kotlin лаконічний, бо ховає зв'язки. `apply`, `let`, `also`, `run` і `with` змінюють значення `this` та `it`. Функції-розширення додають поведінку типам, визначеним деінде. Корутини переносять роботу між `launch`, `async` і `withContext`. Агент, що читає по одному файлу, бачить виклики, але не отримувачів за ними.

Maguyva розв'язує більше такої структури ще під час індексації, тож агент може спитати, хто викликає функцію, і отримати справжню відповідь.

## Що Maguyva витягує з Kotlin

Maguyva охоплює `.kt` і `.kts`. Витягуються функції, класи, об'єкти й об'єкти-компаньйони, а сигнатури функцій фіксують отримувачів розширень, назви параметрів, значення за замовчуванням і параметри `vararg`.

Зв'язки викликів зберігають назви з кваліфікацією класом, тож `OrderRepository.save` відрізняється від будь-якого іншого `save`. Типізація отримувачів відстежує `this` всередині `apply` і `run`, `it` всередині `let` і `also`, а також аргумент `with`, тож виклики всередині функцій області видимості розв'язуються в правильний тип. Білдери корутин і оператори Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) навмисно лишаються в графі.

Граф також фіксує успадкування, реалізацію інтерфейсів, перевизначення, створення екземплярів, анотації, посилання на типи, читання й записи, а також ребра викидання та перехоплення винятків.

## Приклади промптів для агентів

- «Хто викликає `CheckoutUseCase.invoke` і з яких ViewModel?» (`find_symbol`, потім `dependency_search` incoming)
- «Простеж потік синхронізації від `SyncWorker` до мережевого клієнта.» (`get_task_context`)
- «Які класи реалізують `PaymentGateway`?» (`dependency_search`)

## Відомі обмеження

- Близько 250 викликів стандартної бібліотеки Kotlin і платформи відфільтровуються зі зв'язків, тож допоміжні функції на кшталт `listOf`, `map`, `filter` і `println` не стають ребрами графа. Для них використовуйте `text_pattern_search`.

## Наступні кроки

Під'єднайте репозиторій за [швидким стартом](/uk/docs/quickstart), потім перегляньте матрицю підтримки на [сторінці сумісності](/uk/docs/compatibility). Для змішаних кодових баз прочитайте також [посібник із Java](/uk/languages/java).

## Деталі рушія

- Підтримка Kotlin охоплює `.kt` і `.kts`. Сигнатури фіксують отримувачів розширень, назви параметрів, значення за замовчуванням і параметри `vararg`.
- Типізація отримувачів відстежує `this` в `apply` і `run`, `it` в `let` і `also`, а також аргумент `with`, а виклики зберігають назви з кваліфікацією класом.
- Білдери корутин і оператори Flow, як-от `launch`, `withContext` і `flow`, лишаються в графі, а близько 250 викликів стандартної бібліотеки відфільтровуються.

## Корисні точки входу MCP

- `find_symbol`: Використовуйте для класу, сценарію використання чи функції-розширення, коли потрібні визначення й посилання.
- `dependency_search`: Перед зміною API використовуйте обхід incoming для репозиторію чи інтерфейсу, щоб побачити тих, хто викликає, і реалізації.
- `get_task_context`: Використовуйте для промптів на кшталт «простеж потік синхронізації від `SyncWorker` до мережевого клієнта».
