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

Canonical source: https://maguyva.ai/es/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 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.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .gradle, .groovy, .jenkinsfile
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

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

## 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](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Para el código JVM que compilan tus builds, lee la [guía de Java](/es/languages/java) y la [guía de Kotlin](/es/languages/kotlin).

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