# Groovy in Maguyva: Code-Graphen für Gradle- und Jenkins-Code

Canonical source: https://maguyva.ai/de/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 unterstützt Groovy mit AST, Symbolen und Graph, damit KI-Agenten Klassen, Closures und Aufrufe über Groovy-Apps, Gradle-Builds und Jenkinsfiles hinweg verfolgen.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .gradle, .groovy, .jenkinsfile
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- In Groovy geschriebene Gradle-Builds, deren gemeinsame Build-Logik über viele `.gradle`-Dateien verteilt ist.
- Jenkins-Pipelines und Shared Libraries, die Agenten lesen müssen, bevor sich die CI ändert.
- Groovy-Anwendungen und Spock-Testsuiten auf der JVM.

## Agentenabläufe

- Alle Aufrufer eines Shared-Library-Steps finden, bevor sich seine Argumente ändern.
- Verfolgen, welche Build-Skripte einen Helfer aus einer gemeinsamen `.gradle`-Datei aufrufen.
- Vor einem Refactoring abbilden, welche Klassen von einer Basisklasse erben.

## Wo Groovy oberflächliche KI-Tools ins Stolpern bringt

Groovy liest sich oft wie Konfiguration. In einem Gradle-Build ist `dependencies { implementation ... }` eine Kette von Methodenaufrufen mit Closures, und ein deklaratives Jenkinsfile ebenso. Builder machen aus beliebigen Namen Aufrufe, und das GDK hängt Methoden wie `each` und `collect` an jedes Objekt. Ein Tool, das jeden Aufruf erfasst, ertrinkt in diesem Rauschen.

Maguyva filtert die DSL- und GDK-Schicht heraus, damit deine eigenen Methoden und Klassen sichtbar werden.

## Was Maguyva in Groovy extrahiert

Maguyva deckt `.groovy`- und `.gradle`-Dateien sowie `Jenkinsfile` ab. Klassen, Funktionen und Methoden werden extrahiert, und Importe normalisieren `import static`- und `as`-Aliase. Aufrufnamen werden um abschließende Closure-Blöcke und den Safe-Navigation-Operator `?.` bereinigt, sodass `repo?.save(order) { ... }` als Aufruf von `save` erfasst wird. Ein Aufruf ohne Receiver innerhalb einer Klasse wird zu ihrer eigenen Methode aufgelöst.

Rauschen wird in Schichten gefiltert:

- Etwa 140 Namen aus Standardbibliothek, Gradle und Spock, etwa `dependencies`, `implementation`, `task`, `given`, `when`, `then` und `Mock`.
- Etwa 260 GDK-Methoden, etwa `each`, `collect`, `inject` und `eachLine`.
- Builder-DSL-Namen, darunter Jenkins-Steps wie `pipeline`, `stage`, `steps` und `sh`, wenn sie im Builder-Stil statt mit Klammern aufgerufen werden.
- AST-Transformations- und Framework-Annotationen wie `@CompileStatic`, `@Immutable` und `@Autowired`, die nie als Aufrufe erfasst werden.

Der Graph erfasst außerdem Vererbung, Instanziierung sowie Lese- und Schreibzugriffe.

## Beispiel-Prompts für Agenten

- „Wer ruft `deployToStaging` auf, und aus welchen Pipelines?“ (`find_symbol`, dann `dependency_search` incoming)
- „Welche Klassen erben von `BaseIntegrationSpec`?“ (`dependency_search`)
- „Erkläre, wie der Release-Task Artefakte baut und veröffentlicht.“ (`get_task_context`)

## Bekannte Grenzen

- Groovy-Methoden und freie Funktionen teilen sich einen Syntaxknoten, deshalb wählt das Preset `methods` in `structural_search` nichts aus. Verwende stattdessen das Preset `functions` oder `find_symbol`.
- Eine eigene Methode, die wie eine GDK- oder DSL-Methode heißt, etwa `collect` oder `stage`, kann mit diesen herausgefiltert werden. Verwende `text_pattern_search`, wenn ein Aufrufer zu fehlen scheint.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Für den JVM-Code, den deine Builds kompilieren, lies den [Java-Leitfaden](/de/languages/java) und den [Kotlin-Leitfaden](/de/languages/kotlin).

## Engine-Einordnung

- Die Groovy-Unterstützung umfasst `.groovy`, `.gradle` und `Jenkinsfile`. Aufrufnamen verlieren Closure-Blöcke und `?.`-Safe-Navigation.
- Etwa 140 Namen aus Standardbibliothek, Gradle und Spock sowie etwa 260 GDK-Methoden werden aus den Beziehungen gefiltert.
- Builder-DSL-Namen, darunter Jenkins-Steps wie `stage` und `sh`, werden im Builder-Stil gefiltert, und Annotationen werden nie als Aufrufe erfasst.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es für einen Shared-Library-Step, einen Build-Helfer oder eine Klasse, wenn du Definition und Aufrufer brauchst.
- `dependency_search`: Nutz die eingehende Traversierung auf einem Build-Helfer, um zu sehen, welche Skripte und Pipelines ihn aufrufen.
- `text_pattern_search`: Nutz es für DSL-Aufrufe und GDK-Methoden, die aus dem Graphen gefiltert werden.
