Naar inhoud springen
cd /languages
  • JVM-scripting
  • Programmeren
  • AST- en symboolondersteuning

Groovy in Maguyva: codegrafen voor Gradle- en Jenkins-code

Maguyva ondersteunt Groovy met AST, symbolen en graaf, zodat AI-agents klassen, closures en aanroepen volgen in Groovy-apps, Gradle-builds en Jenkinsfiles.

Waar Groovy oppervlakkige AI-tools laat struikelen

Groovy leest vaak als configuratie. In een Gradle-build is dependencies { implementation ... } een keten van methodeaanroepen met closures, en een declaratieve Jenkinsfile ook. Builders maken van willekeurige namen aanroepen, en de GDK voegt methoden zoals each en collect aan elk object toe. Een tool die elke aanroep vastlegt, verdrinkt in die ruis.

Maguyva filtert de DSL- en GDK-laag weg, zodat je eigen methoden en klassen opvallen.

Wat Maguyva in Groovy extraheert

Maguyva dekt .groovy- en .gradle-bestanden en Jenkinsfile. Klassen, functies en methoden worden geëxtraheerd, en imports normaliseren import static- en as-aliassen. Aanroepnamen worden ontdaan van afsluitende closureblokken en de safe-navigation-operator ?., dus repo?.save(order) { ... } wordt vastgelegd als een aanroep van save. Een aanroep zonder receiver binnen een klasse wordt opgelost naar de eigen methode van die klasse.

Ruis wordt in lagen gefilterd:

  • Ongeveer 140 namen uit de standaardbibliotheek, Gradle en Spock, zoals dependencies, implementation, task, given, when, then en Mock.
  • Ongeveer 260 GDK-methoden, zoals each, collect, inject en eachLine.
  • Builder-DSL-namen, waaronder Jenkins-steps zoals pipeline, stage, steps en sh, wanneer ze in builderstijl worden gebruikt in plaats van met haakjes aangeroepen.
  • AST-transformatie- en framework-annotaties zoals @CompileStatic, @Immutable en @Autowired, die nooit als aanroepen worden vastgelegd.

De graaf legt ook overerving, instantiatie en lees- en schrijfacties vast.

Voorbeeldprompts voor agents

  • “Wie roept deployToStaging aan, en vanuit welke pipelines?” (find_symbol, daarna dependency_search incoming)
  • “Welke klassen erven van BaseIntegrationSpec?” (dependency_search)
  • “Leg uit hoe de releasetaak artefacten bouwt en publiceert.” (get_task_context)

Bekende beperkingen

  • Groovy-methoden en vrije functies delen één syntaxisknoop, dus de preset methods in structural_search selecteert niets. Gebruik in plaats daarvan de preset functions of find_symbol.
  • Een eigen methode met dezelfde naam als een GDK- of DSL-methode, zoals collect of stage, kan daarmee mee gefilterd worden. Gebruik text_pattern_search als een aanroeper lijkt te ontbreken.

Volgende stappen

Koppel een repository via de snelstart en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Lees voor de JVM-code die je builds compileren de Java-gids en de Kotlin-gids.

Beste toepassing

  • > Gradle-builds in Groovy waarvan de gedeelde buildlogica over veel `.gradle`-bestanden is verspreid.
  • > Jenkins-pipelines en shared libraries die agents moeten lezen voordat de CI verandert.
  • > Groovy-applicaties en Spock-testsuites op de JVM.

Agentworkflows

  • > Alle aanroepers van een shared-library-step vinden voordat de argumenten veranderen.
  • > Volgen welke buildscripts een helper aanroepen die in een gemeenschappelijk `.gradle`-bestand is gedefinieerd.
  • > Voor een refactor in kaart brengen welke klassen van een basisklasse erven.

Enginedetails

  • > Groovy-ondersteuning omvat `.groovy`, `.gradle` en `Jenkinsfile`. Aanroepnamen verliezen closureblokken en `?.`-safe-navigation.
  • > Ongeveer 140 namen uit de standaardbibliotheek, Gradle en Spock en ongeveer 260 GDK-methoden worden uit de relaties gefilterd.
  • > Builder-DSL-namen, waaronder Jenkins-steps zoals `stage` en `sh`, worden in builderstijl gefilterd, en annotaties worden nooit als aanroepen vastgelegd.

Nuttige MCP-instappunten

  • find_symbol

    Gebruik het voor een shared-library-step, buildhelper of klasse wanneer je de definitie en aanroepers nodig hebt.

  • dependency_search

    Gebruik incoming-traversal op een buildhelper om te zien welke scripts en pipelines hem aanroepen.

  • text_pattern_search

    Gebruik het voor DSL-aanroepen en GDK-methoden, die uit de graaf worden gefilterd.