Przejdź do treści
cd /languages
  • Skrypty na JVM
  • Programowanie
  • Obsługa AST i symboli

Groovy w Maguyva: grafy kodu dla Gradle i Jenkinsa

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.

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, a potem sprawdź macierz obsługi na stronie zgodności. W przypadku kodu JVM kompilowanego przez twoje buildy przeczytaj przewodnik po Javie i przewodnik po Kotlinie.

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ą.

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.