# Groovy in Maguyva: grafi del codice per Gradle e Jenkins

Canonical source: https://maguyva.ai/it/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 supporta Groovy con AST, simboli e grafo, così gli agenti IA seguono classi, closure e chiamate in app Groovy, build Gradle e Jenkinsfile.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Programmazione
- Estensioni: .gradle, .groovy, .jenkinsfile
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- Build Gradle scritte in Groovy, in cui la logica condivisa vive in molti file `.gradle`.
- Pipeline Jenkins e shared library che gli agenti devono leggere prima di cambiare la CI.
- Applicazioni Groovy e suite di test Spock sulla JVM.

## Workflow degli agenti

- Trovare tutti i chiamanti di uno step di shared library prima di cambiarne gli argomenti.
- Tracciare quali script di build chiamano un helper definito in un file `.gradle` comune.
- Mappare quali classi ereditano da una classe base prima di un refactoring.

## Dove Groovy fa inciampare gli strumenti di IA superficiali

Groovy spesso si legge come una configurazione. In una build Gradle, `dependencies { implementation ... }` è una catena di chiamate di metodo con closure, e un Jenkinsfile dichiarativo pure. I builder trasformano qualsiasi nome in una chiamata, e il GDK aggiunge metodi come `each` e `collect` a ogni oggetto. Uno strumento che registra ogni chiamata annega in questo rumore.

Maguyva filtra lo strato DSL e GDK, così risaltano i tuoi metodi e le tue classi.

## Cosa estrae Maguyva in Groovy

Maguyva copre i file `.groovy` e `.gradle`, oltre a `Jenkinsfile`. Vengono estratti classi, funzioni e metodi, e gli import normalizzano gli alias `import static` e `as`. I nomi delle chiamate vengono ripuliti dai blocchi di closure finali e dall'operatore di navigazione sicura `?.`, quindi `repo?.save(order) { ... }` viene registrato come chiamata a `save`. Una chiamata senza receiver dentro una classe si risolve sul metodo della classe stessa.

Il rumore viene filtrato a strati:

- Circa 140 nomi della libreria standard, di Gradle e di Spock, come `dependencies`, `implementation`, `task`, `given`, `when`, `then` e `Mock`.
- Circa 260 metodi del GDK, come `each`, `collect`, `inject` e `eachLine`.
- I nomi dei DSL dei builder, compresi step di Jenkins come `pipeline`, `stage`, `steps` e `sh`, quando sono usati in stile builder invece che chiamati con le parentesi.
- Le annotazioni di trasformazione dell'AST e dei framework come `@CompileStatic`, `@Immutable` e `@Autowired`, che non vengono mai registrate come chiamate.

Il grafo registra anche ereditarietà, istanziazione e letture e scritture.

## Esempi di prompt per agenti

- "Chi chiama `deployToStaging`, e da quali pipeline?" (`find_symbol`, poi `dependency_search` incoming)
- "Quali classi ereditano da `BaseIntegrationSpec`?" (`dependency_search`)
- "Spiega come il task di release costruisce e pubblica gli artefatti." (`get_task_context`)

## Limiti noti

- In Groovy metodi e funzioni libere condividono lo stesso nodo sintattico, quindi il preset `methods` di `structural_search` non seleziona nulla. Usa invece il preset `functions` o `find_symbol`.
- Un tuo metodo che ha lo stesso nome di un metodo del GDK o di un DSL, come `collect` o `stage`, può essere filtrato insieme a questi. Usa `text_pattern_search` quando sembra mancare un chiamante.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto nella [pagina di compatibilità](/it/docs/compatibility). Per il codice JVM compilato dalle tue build, leggi la [guida a Java](/it/languages/java) e la [guida a Kotlin](/it/languages/kotlin).

## Dettagli del motore

- Il supporto a Groovy copre `.groovy`, `.gradle` e `Jenkinsfile`. I nomi delle chiamate perdono i blocchi di closure e la navigazione sicura `?.`.
- Circa 140 nomi della libreria standard, di Gradle e di Spock, e circa 260 metodi del GDK, vengono filtrati dalle relazioni.
- I nomi dei DSL dei builder, compresi step di Jenkins come `stage` e `sh`, vengono filtrati in stile builder, e le annotazioni non vengono mai registrate come chiamate.

## Punti di ingresso MCP utili

- `find_symbol`: Usalo per uno step di shared library, un helper di build o una classe quando ti servono definizione e chiamanti.
- `dependency_search`: Usa l'attraversamento incoming su un helper di build per vedere quali script e pipeline lo chiamano.
- `text_pattern_search`: Usalo per chiamate dei DSL e metodi del GDK, che vengono filtrati dal grafo.
