Saltar al contenido
cd /languages
  • Scripting en la JVM
  • Programación
  • Soporte de AST y símbolos

Groovy en Maguyva: grafos de código para Gradle y Jenkins

Maguyva admite Groovy con AST, símbolos y grafo, para que los agentes de IA sigan clases, closures y llamadas en apps Groovy, builds de Gradle y Jenkinsfiles.

Dónde Groovy hace tropezar a las herramientas de IA superficiales

Groovy a menudo se lee como configuración. En un build de Gradle, dependencies { implementation ... } es una cadena de llamadas a métodos con closures, y un Jenkinsfile declarativo también. Los builders convierten cualquier nombre en una llamada, y el GDK añade métodos como each y collect a cada objeto. Una herramienta que registra cada llamada se ahoga en ese ruido.

Maguyva filtra la capa de DSL y GDK para que destaquen tus propios métodos y clases.

Qué extrae Maguyva en Groovy

Maguyva cubre archivos .groovy y .gradle, además de Jenkinsfile. Se extraen clases, funciones y métodos, y las importaciones normalizan los alias import static y as. Los nombres de llamada se limpian de bloques de closure finales y del operador de navegación segura ?., así que repo?.save(order) { ... } se registra como una llamada a save. Una llamada sin receptor dentro de una clase se resuelve a su propio método.

El ruido se filtra por capas:

  • Unos 140 nombres de la biblioteca estándar, de Gradle y de Spock, como dependencies, implementation, task, given, when, then y Mock.
  • Unos 260 métodos del GDK, como each, collect, inject y eachLine.
  • Nombres de DSL de builders, incluidos pasos de Jenkins como pipeline, stage, steps y sh, cuando se usan en estilo builder en vez de llamarse con paréntesis.
  • Anotaciones de transformación de AST y de frameworks como @CompileStatic, @Immutable y @Autowired, que nunca se registran como llamadas.

El grafo también registra herencia, instanciación y lecturas y escrituras.

Ejemplos de prompts para agentes

  • “¿Quién llama a deployToStaging y desde qué pipelines?” (find_symbol, luego dependency_search incoming)
  • “¿Qué clases heredan de BaseIntegrationSpec?” (dependency_search)
  • “Explica cómo la tarea de release construye y publica los artefactos.” (get_task_context)

Limitaciones conocidas

  • Los métodos de Groovy y las funciones libres comparten un mismo nodo de sintaxis, así que el preset methods de structural_search no selecciona nada. Usa en su lugar el preset functions o find_symbol.
  • Un método propio que comparte nombre con un método del GDK o de un DSL, como collect o stage, puede filtrarse junto con ellos. Usa text_pattern_search cuando parezca faltar un llamador.

Próximos pasos

Conecta un repositorio con el inicio rápido y luego revisa la matriz de compatibilidad en la página de compatibilidad. Para el código JVM que compilan tus builds, lee la guía de Java y la guía de Kotlin.

Mejor uso

  • > Builds de Gradle escritos en Groovy, donde la lógica compartida vive en muchos archivos `.gradle`.
  • > Pipelines de Jenkins y shared libraries que los agentes deben leer antes de cambiar la CI.
  • > Aplicaciones Groovy y suites de pruebas Spock sobre la JVM.

Flujos de trabajo del agente

  • > Encontrar todos los llamadores de un paso de una shared library antes de cambiar sus argumentos.
  • > Rastrear qué scripts de build llaman a un helper definido en un archivo `.gradle` común.
  • > Mapear qué clases heredan de una clase base antes de un refactor.

Detalles del motor

  • > El soporte de Groovy cubre `.groovy`, `.gradle` y `Jenkinsfile`. Los nombres de llamada pierden los bloques de closure y la navegación segura `?.`.
  • > Unos 140 nombres de la biblioteca estándar, de Gradle y de Spock, y unos 260 métodos del GDK, se filtran de las relaciones.
  • > Los nombres de DSL de builders, incluidos pasos de Jenkins como `stage` y `sh`, se filtran en estilo builder, y las anotaciones nunca se registran como llamadas.

Puntos de entrada MCP útiles

  • find_symbol

    Úsalo para un paso de una shared library, un helper de build o una clase cuando necesites la definición y los llamadores.

  • dependency_search

    Usa el recorrido incoming sobre un helper de build para ver qué scripts y pipelines lo llaman.

  • text_pattern_search

    Úsalo para llamadas de DSL y métodos del GDK, que se filtran del grafo.