Hoppa till innehåll
cd /languages
  • Skript på JVM
  • Programmering
  • Stöd för AST och symboler

Groovy i Maguyva: kodgrafer för Gradle- och Jenkins-kod

Maguyva stöder Groovy med AST, symboler och graf, så att AI-agenter kan följa klasser, closures och anrop i Groovy-appar, Gradle-byggen och Jenkinsfiles.

Där Groovy får ytliga AI-verktyg att snubbla

Groovy läses ofta som konfiguration. I ett Gradle-bygge är dependencies { implementation ... } en kedja av metodanrop med closures, och en deklarativ Jenkinsfile likaså. Builders gör godtyckliga namn till anrop, och GDK lägger till metoder som each och collect på varje objekt. Ett verktyg som registrerar varje anrop drunknar i det bruset.

Maguyva filtrerar bort DSL- och GDK-lagret så att dina egna metoder och klasser syns.

Vad Maguyva extraherar i Groovy

Maguyva täcker .groovy- och .gradle-filer samt Jenkinsfile. Klasser, funktioner och metoder extraheras, och importer normaliserar import static- och as-alias. Anropsnamn rensas från avslutande closure-block och safe-navigation-operatorn ?., så repo?.save(order) { ... } registreras som ett anrop till save. Ett anrop utan mottagare inne i en klass slås upp till klassens egen metod.

Brus filtreras i lager:

  • Omkring 140 namn från standardbiblioteket, Gradle och Spock, som dependencies, implementation, task, given, when, then och Mock.
  • Omkring 260 GDK-metoder, som each, collect, inject och eachLine.
  • Builder-DSL-namn, inklusive Jenkins-steg som pipeline, stage, steps och sh, när de används i builder-stil i stället för att anropas med parenteser.
  • AST-transformations- och ramverksannoteringar som @CompileStatic, @Immutable och @Autowired, som aldrig registreras som anrop.

Grafen registrerar också arv, instansiering samt läsningar och skrivningar.

Exempel på prompter för agenter

  • “Vem anropar deployToStaging, och från vilka pipelines?” (find_symbol, sedan dependency_search incoming)
  • “Vilka klasser ärver från BaseIntegrationSpec?” (dependency_search)
  • “Förklara hur release-tasken bygger och publicerar artefakter.” (get_task_context)

Kända begränsningar

  • Groovy-metoder och fria funktioner delar en syntaxnod, så presetet methods i structural_search väljer ingenting. Använd i stället presetet functions eller find_symbol.
  • En egen metod som heter samma sak som en GDK- eller DSL-metod, som collect eller stage, kan filtreras bort tillsammans med dem. Använd text_pattern_search när en anropare verkar saknas.

Nästa steg

Anslut ett repo med snabbstarten och kontrollera sedan stödmatrisen på kompatibilitetssidan. För JVM-koden som dina byggen kompilerar, läs guiden för Java och guiden för Kotlin.

Bäst lämpad för

  • > Gradle-byggen skrivna i Groovy, där delad bygglogik ligger i många `.gradle`-filer.
  • > Jenkins-pipelines och shared libraries som agenter måste läsa innan CI ändras.
  • > Groovy-applikationer och Spock-testsviter på JVM.

Agentarbetsflöden

  • > Hitta alla anropare av ett steg i ett shared library innan dess argument ändras.
  • > Spåra vilka byggskript som anropar en hjälpfunktion definierad i en gemensam `.gradle`-fil.
  • > Kartlägga vilka klasser som ärver från en basklass inför en refaktorering.

Motordetaljer

  • > Groovy-stödet omfattar `.groovy`, `.gradle` och `Jenkinsfile`. Anropsnamn tappar closure-block och `?.`-safe-navigation.
  • > Omkring 140 namn från standardbiblioteket, Gradle och Spock och omkring 260 GDK-metoder filtreras bort från relationerna.
  • > Builder-DSL-namn, inklusive Jenkins-steg som `stage` och `sh`, filtreras i builder-stil, och annoteringar registreras aldrig som anrop.

Användbara MCP-ingångar

  • find_symbol

    Använd det för ett steg i ett shared library, en bygghjälpare eller en klass när du behöver definitionen och anroparna.

  • dependency_search

    Använd incoming-traversering på en bygghjälpare för att se vilka skript och pipelines som anropar den.

  • text_pattern_search

    Använd det för DSL-anrop och GDK-metoder, som filtreras bort från grafen.