# Groovy w Maguyva: grafy kodu dla Gradle i Jenkinsa

Canonical source: https://maguyva.ai/pl/languages/groovy

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 Groovy przez AST, symbole i graf, dzięki czemu agenci AI śledzą klasy, domknięcia i wywołania w aplikacjach Groovy, buildach Gradle i plikach Jenkinsfile.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .gradle, .groovy, .jenkinsfile
- 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

- Buildy Gradle pisane w Groovy, w których wspólna logika budowania jest rozrzucona po wielu plikach `.gradle`.
- Potoki Jenkinsa i biblioteki współdzielone, które agenci muszą przeczytać przed zmianą CI.
- Aplikacje Groovy i zestawy testów Spock na JVM.

## Workflow agentów

- Znaleźć wszystkie miejsca wywołujące krok biblioteki współdzielonej przed zmianą jego argumentów.
- Prześledzić, które skrypty budowania wywołują funkcję pomocniczą zdefiniowaną we wspólnym pliku `.gradle`.
- Zmapować klasy dziedziczące po klasie bazowej przed refaktoryzacją.

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

Groovy często czyta się jak konfigurację. W buildzie Gradle `dependencies { implementation ... }` to łańcuch wywołań metod z domknięciami, podobnie jak deklaratywny Jenkinsfile. Buildery zamieniają dowolne nazwy w wywołania, a GDK dodaje do każdego obiektu metody takie jak `each` i `collect`. Narzędzie, które zapisuje każde wywołanie, tonie w tym szumie.

Maguyva odfiltrowuje warstwę DSL i GDK, żeby twoje własne metody i klasy były widoczne.

## Co Maguyva wyodrębnia w Groovy

Maguyva obejmuje pliki `.groovy` i `.gradle` oraz `Jenkinsfile`. Wyodrębniane są klasy, funkcje i metody, a importy normalizują aliasy `import static` i `as`. Nazwy wywołań są oczyszczane z końcowych bloków domknięć i operatora bezpiecznej nawigacji `?.`, więc `repo?.save(order) { ... }` zapisuje się jako wywołanie `save`. Wywołanie bez odbiorcy wewnątrz klasy jest rozwiązywane do jej własnej metody.

Szum jest filtrowany warstwami:

- Około 140 nazw z biblioteki standardowej, Gradle i Spocka, takich jak `dependencies`, `implementation`, `task`, `given`, `when`, `then` i `Mock`.
- Około 260 metod GDK, takich jak `each`, `collect`, `inject` i `eachLine`.
- Nazwy DSL builderów, w tym kroki Jenkinsa, takie jak `pipeline`, `stage`, `steps` i `sh`, gdy są używane w stylu buildera, a nie wywoływane z nawiasami.
- Adnotacje transformacji AST i frameworków, takie jak `@CompileStatic`, `@Immutable` i `@Autowired`, które nigdy nie są zapisywane jako wywołania.

Graf zapisuje też dziedziczenie, tworzenie instancji oraz odczyty i zapisy.

## Przykładowe prompty dla agentów

- „Kto wywołuje `deployToStaging` i z których potoków?” (`find_symbol`, potem `dependency_search` incoming)
- „Które klasy dziedziczą po `BaseIntegrationSpec`?” (`dependency_search`)
- „Wyjaśnij, jak zadanie release buduje i publikuje artefakty.” (`get_task_context`)

## Znane ograniczenia

- Metody i wolne funkcje w Groovy współdzielą jeden węzeł składni, więc preset `methods` w `structural_search` niczego nie wybiera. Zamiast niego użyj presetu `functions` lub `find_symbol`.
- Twoja metoda o tej samej nazwie co metoda GDK lub DSL, na przykład `collect` albo `stage`, może zostać odfiltrowana razem z nimi. Gdy wydaje się, że brakuje wywołującego, 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 kodu JVM kompilowanego przez twoje buildy przeczytaj [przewodnik po Javie](/pl/languages/java) i [przewodnik po Kotlinie](/pl/languages/kotlin).

## Szczegóły silnika

- Obsługa Groovy obejmuje `.groovy`, `.gradle` i `Jenkinsfile`. Nazwy wywołań tracą bloki domknięć i bezpieczną nawigację `?.`.
- Około 140 nazw z biblioteki standardowej, Gradle i Spocka oraz około 260 metod GDK jest odfiltrowywanych z relacji.
- Nazwy DSL builderów, w tym kroki Jenkinsa, takie jak `stage` i `sh`, są filtrowane w stylu buildera, a adnotacje nigdy nie są zapisywane jako wywołania.

## Przydatne punkty wejścia MCP

- `find_symbol`: Użyj go dla kroku biblioteki współdzielonej, funkcji pomocniczej budowania lub klasy, gdy potrzebujesz definicji i wywołujących.
- `dependency_search`: Użyj przejścia incoming na funkcji pomocniczej budowania, aby zobaczyć, które skrypty i potoki ją wywołują.
- `text_pattern_search`: Użyj go do wywołań DSL i metod GDK, które są odfiltrowywane z grafu.
