Zum Inhalt springen
cd /languages
  • JVM-Scripting
  • Programmierung
  • AST- und Symbol-Support

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

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.

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 und prüfe dann die Unterstützungsmatrix auf der Kompatibilitätsseite. Für den JVM-Code, den deine Builds kompilieren, lies den Java-Leitfaden und den Kotlin-Leitfaden.

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.

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.