# Kotlin w Maguyva: grafy kodu dla Androida i JVM

Canonical source: https://maguyva.ai/pl/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 obsługuje Kotlina przez AST, symbole i graf, dzięki czemu agenci AI śledzą klasy, funkcje rozszerzające i korutyny w kodzie Androida i JVM.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .kt, .kts
- Prawdziwe parsowanie AST dla wyszukiwania świadomego składni i kontekstu strukturalnego.
- Nazwane symbole zasilają wyszukiwanie semantyczne i wzajemne odwołania. Nawigacja po grafie jest dostępna po włączeniu ekstrakcji relacji.
- Ten język dostarcza symbole i relacje do wyszukiwania uwzględniającego graf; obsługiwane typy krawędzi zależą od jego rodzimych konstrukcji.
- Dostępne są zarówno parsowanie AST, jak i ekstrakcja symboli.

## Najlepsze dopasowanie

- Zespoły Androida z dużymi aplikacjami wielomodułowymi, w których ViewModele, repozytoria i przypadki użycia wywołują się między modułami.
- Kotlin po stronie serwera i usługi Kotlin/JVM, które łączą Kotlina ze starszym kodem w Javie.
- Buildy Gradle pisane w skryptach Kotlina (`.kts`), które agenci muszą czytać razem z kodem aplikacji.

## Workflow agentów

- Znaleźć wszystkich wywołujących klasę repozytorium lub przypadku użycia przed zmianą jej API.
- Prześledzić przepływ korutyn od `launch` w ViewModelu przez `withContext` aż do warstwy danych.
- Zmapować, które klasy implementują interfejs lub nadpisują metodę bazową, przed refaktoryzacją.

## Gdzie Kotlin sprawia kłopot powierzchownym narzędziom AI

Kotlin jest zwięzły, bo ukrywa połączenia. `apply`, `let`, `also`, `run` i `with` zmieniają znaczenie `this` i `it`. Funkcje rozszerzające dodają zachowanie do typów zdefiniowanych gdzie indziej. Korutyny przenoszą pracę między `launch`, `async` i `withContext`. Agent czytający jeden plik naraz widzi wywołania, ale nie odbiorców, którzy za nimi stoją.

Maguyva rozwiązuje większą część tej struktury już podczas indeksowania, więc agent może zapytać, kto wywołuje funkcję, i dostać prawdziwą odpowiedź.

## Co Maguyva wyodrębnia w Kotlinie

Maguyva obejmuje `.kt` i `.kts`. Wyodrębniane są funkcje, klasy, obiekty i obiekty towarzyszące, a sygnatury funkcji zapisują odbiorców rozszerzeń, nazwy parametrów, wartości domyślne i parametry `vararg`.

Relacje wywołań zachowują nazwy kwalifikowane klasą, więc `OrderRepository.save` pozostaje odróżnialne od innego `save`. Typowanie odbiorców śledzi `this` wewnątrz `apply` i `run`, `it` wewnątrz `let` i `also` oraz argument `with`, dzięki czemu wywołania w funkcjach zakresu są rozwiązywane do właściwego typu. Konstruktory korutyn i operatory Flow (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) są celowo zachowywane w grafie.

Graf zapisuje też dziedziczenie, implementację interfejsów, nadpisania, tworzenie instancji, adnotacje, odwołania do typów, odczyty i zapisy oraz krawędzie rzucania i przechwytywania wyjątków.

## Przykładowe prompty dla agentów

- „Kto wywołuje `CheckoutUseCase.invoke` i z których ViewModeli?” (`find_symbol`, potem `dependency_search` incoming)
- „Prześledź przepływ synchronizacji od `SyncWorker` do klienta sieciowego.” (`get_task_context`)
- „Które klasy implementują `PaymentGateway`?” (`dependency_search`)

## Znane ograniczenia

- Około 250 wywołań biblioteki standardowej Kotlina i platformy jest filtrowanych z relacji, więc pomocnicze funkcje, takie jak `listOf`, `map`, `filter` i `println`, nie są krawędziami grafu. Do ich wyszukiwania użyj `text_pattern_search`.

## Kolejne kroki

Podłącz repozytorium za pomocą [szybkiego startu](/pl/docs/quickstart), a potem sprawdź macierz obsługi na [stronie zgodności](/pl/docs/compatibility). W przypadku mieszanych baz kodu przeczytaj też [przewodnik po Javie](/pl/languages/java).

## Szczegóły silnika

- Obsługa Kotlina obejmuje `.kt` i `.kts`. Sygnatury zapisują odbiorców rozszerzeń, nazwy parametrów, wartości domyślne i parametry `vararg`.
- Typowanie odbiorców śledzi `this` w `apply` i `run`, `it` w `let` i `also` oraz argument `with`, a wywołania zachowują nazwy kwalifikowane klasą.
- Konstruktory korutyn i operatory Flow, takie jak `launch`, `withContext` i `flow`, pozostają w grafie, a około 250 wywołań biblioteki standardowej jest filtrowanych.

## Przydatne punkty wejścia MCP

- `find_symbol`: Używaj go z klasą, przypadkiem użycia lub funkcją rozszerzającą, gdy potrzebujesz definicji i odwołań.
- `dependency_search`: Przed zmianą API użyj przejścia incoming na repozytorium lub interfejsie, aby zobaczyć wywołujących i implementacje.
- `get_task_context`: Używaj go do promptów typu „prześledź przepływ synchronizacji od `SyncWorker` do klienta sieciowego”.
