Passer au contenu
cd /languages
  • Scripting JVM
  • Programmation
  • Prise en charge de l’AST et des symboles

Groovy dans Maguyva : des graphes de code pour Gradle et Jenkins

Maguyva prend en charge Groovy avec AST, symboles et graphe, pour que les agents IA suivent classes, closures et appels dans les apps Groovy, les builds Gradle et les Jenkinsfiles.

Là où Groovy fait trébucher les outils d’IA superficiels

Groovy se lit souvent comme de la configuration. Dans un build Gradle, dependencies { implementation ... } est une chaîne d’appels de méthode avec des closures, et un Jenkinsfile déclaratif aussi. Les builders transforment n’importe quel nom en appel, et le GDK ajoute des méthodes comme each et collect à chaque objet. Un outil qui enregistre chaque appel se noie dans ce bruit.

Maguyva filtre la couche DSL et GDK pour que vos propres méthodes et classes ressortent.

Ce que Maguyva extrait en Groovy

Maguyva couvre les fichiers .groovy et .gradle ainsi que Jenkinsfile. Les classes, fonctions et méthodes sont extraites, et les imports normalisent les alias import static et as. Les noms d’appel sont débarrassés des blocs de closure finaux et de l’opérateur de navigation sûre ?. : repo?.save(order) { ... } est donc enregistré comme un appel à save. Un appel sans receveur à l’intérieur d’une classe est résolu vers sa propre méthode.

Le bruit est filtré par couches :

  • Environ 140 noms de la bibliothèque standard, de Gradle et de Spock, comme dependencies, implementation, task, given, when, then et Mock.
  • Environ 260 méthodes du GDK, comme each, collect, inject et eachLine.
  • Les noms de DSL de builder, dont les étapes Jenkins comme pipeline, stage, steps et sh, lorsqu’ils sont utilisés en style builder plutôt qu’appelés avec des parenthèses.
  • Les annotations de transformation d’AST et de framework comme @CompileStatic, @Immutable et @Autowired, qui ne sont jamais enregistrées comme des appels.

Le graphe enregistre aussi l’héritage, l’instanciation et les lectures et écritures.

Exemples de prompts pour agents

  • « Qui appelle deployToStaging, et depuis quels pipelines ? » (find_symbol, puis dependency_search en incoming)
  • « Quelles classes héritent de BaseIntegrationSpec ? » (dependency_search)
  • « Explique comment la tâche de release construit et publie les artefacts. » (get_task_context)

Limites connues

  • Les méthodes et les fonctions libres de Groovy partagent un même nœud de syntaxe : le preset methods de structural_search ne sélectionne donc rien. Utilisez plutôt le preset functions ou find_symbol.
  • Une méthode à vous qui porte le nom d’une méthode du GDK ou d’un DSL, comme collect ou stage, peut être filtrée avec elles. Utilisez text_pattern_search quand un appelant semble manquer.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Pour le code JVM que vos builds compilent, lisez le guide Java et le guide Kotlin.

Idéal pour

  • > Les builds Gradle écrits en Groovy, dont la logique partagée vit dans de nombreux fichiers `.gradle`.
  • > Les pipelines Jenkins et les shared libraries que les agents doivent lire avant de modifier la CI.
  • > Les applications Groovy et les suites de tests Spock sur la JVM.

Workflows d'agent

  • > Trouver tous les appelants d'une étape de shared library avant de modifier ses arguments.
  • > Retracer quels scripts de build appellent un helper défini dans un fichier `.gradle` commun.
  • > Cartographier les classes qui héritent d'une classe de base avant un refactoring.

Détails du moteur

  • > La prise en charge de Groovy couvre `.groovy`, `.gradle` et `Jenkinsfile`. Les noms d'appel perdent les blocs de closure et la navigation sûre `?.`.
  • > Environ 140 noms de la bibliothèque standard, de Gradle et de Spock, et environ 260 méthodes du GDK, sont filtrés des relations.
  • > Les noms de DSL de builder, dont les étapes Jenkins comme `stage` et `sh`, sont filtrés en style builder, et les annotations ne sont jamais enregistrées comme des appels.

Points d'entrée MCP utiles

  • find_symbol

    Utilisez-le pour une étape de shared library, un helper de build ou une classe quand vous avez besoin de la définition et des appelants.

  • dependency_search

    Utilisez la traversée incoming sur un helper de build pour voir quels scripts et pipelines l'appellent.

  • text_pattern_search

    Utilisez-le pour les appels de DSL et les méthodes du GDK, qui sont filtrés du graphe.