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

Canonical source: https://maguyva.ai/nl/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 ondersteunt Groovy met AST, symbolen en graaf, zodat AI-agents klassen, closures en aanroepen volgen in Groovy-apps, Gradle-builds en Jenkinsfiles.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .gradle, .groovy, .jenkinsfile
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

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

## 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](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Lees voor de JVM-code die je builds compileren de [Java-gids](/nl/languages/java) en de [Kotlin-gids](/nl/languages/kotlin).

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