# Groovy no Maguyva: grafos de código para Gradle e Jenkins

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

O Maguyva oferece suporte a Groovy com AST, símbolos e grafo, para que agentes de IA sigam classes, closures e chamadas em apps Groovy, builds Gradle e Jenkinsfiles.

## Panorama de suporte

- Nível: Suporte a AST e símbolos
- Programação
- Extensões: .gradle, .groovy, .jenkinsfile
- Parsing real de AST para busca com consciência de sintaxe e contexto estrutural.
- Símbolos nomeados alimentam a busca semântica e as referências cruzadas. A navegação por grafo fica disponível quando a extração de relações está habilitada.
- Esta linguagem fornece símbolos e relações para a busca orientada por grafo; os tipos de aresta compatíveis variam de acordo com seus construtos nativos.
- A análise de AST e a extração de símbolos estão disponíveis.

## Uso ideal

- Builds Gradle escritos em Groovy, em que a lógica compartilhada fica espalhada por muitos arquivos `.gradle`.
- Pipelines Jenkins e shared libraries que os agentes precisam ler antes de mudar a CI.
- Aplicações Groovy e suítes de teste Spock na JVM.

## Fluxos de trabalho de agente

- Encontrar todos os chamadores de um step de shared library antes de mudar seus argumentos.
- Rastrear quais scripts de build chamam um helper definido em um arquivo `.gradle` comum.
- Mapear quais classes herdam de uma classe base antes de um refactor.

## Onde Groovy derruba ferramentas de IA superficiais

Groovy muitas vezes parece configuração. Em um build Gradle, `dependencies { implementation ... }` é uma cadeia de chamadas de método com closures, e um Jenkinsfile declarativo também. Builders transformam qualquer nome em chamada, e o GDK adiciona métodos como `each` e `collect` a todo objeto. Uma ferramenta que registra cada chamada se afoga nesse ruído.

O Maguyva filtra a camada de DSL e GDK para que seus próprios métodos e classes se destaquem.

## O que o Maguyva extrai em Groovy

O Maguyva cobre arquivos `.groovy` e `.gradle`, além de `Jenkinsfile`. Classes, funções e métodos são extraídos, e os imports normalizam aliases `import static` e `as`. Os nomes de chamada são limpos de blocos de closure no final e do operador de navegação segura `?.`, então `repo?.save(order) { ... }` é registrado como uma chamada a `save`. Uma chamada sem receiver dentro de uma classe é resolvida para o próprio método dela.

O ruído é filtrado em camadas:

- Cerca de 140 nomes da biblioteca padrão, do Gradle e do Spock, como `dependencies`, `implementation`, `task`, `given`, `when`, `then` e `Mock`.
- Cerca de 260 métodos do GDK, como `each`, `collect`, `inject` e `eachLine`.
- Nomes de DSL de builders, incluindo steps do Jenkins como `pipeline`, `stage`, `steps` e `sh`, quando usados no estilo builder em vez de chamados com parênteses.
- Anotações de transformação de AST e de frameworks como `@CompileStatic`, `@Immutable` e `@Autowired`, que nunca são registradas como chamadas.

O grafo também registra herança, instanciação e leituras e escritas.

## Exemplos de prompts para agentes

- "Quem chama `deployToStaging`, e de quais pipelines?" (`find_symbol`, depois `dependency_search` incoming)
- "Quais classes herdam de `BaseIntegrationSpec`?" (`dependency_search`)
- "Explique como a task de release gera e publica os artefatos." (`get_task_context`)

## Limitações conhecidas

- Métodos e funções livres do Groovy compartilham um mesmo nó de sintaxe, então o preset `methods` do `structural_search` não seleciona nada. Use o preset `functions` ou `find_symbol`.
- Um método seu que tem o mesmo nome de um método do GDK ou de DSL, como `collect` ou `stage`, pode ser filtrado junto com eles. Use `text_pattern_search` quando parecer faltar um chamador.

## Próximos passos

Conecte um repositório pelo [início rápido](/pt-br/docs/quickstart) e depois confira a matriz de suporte na [página de compatibilidade](/pt-br/docs/compatibility). Para o código JVM que seus builds compilam, leia o [guia de Java](/pt-br/languages/java) e o [guia de Kotlin](/pt-br/languages/kotlin).

## Detalhes do motor

- O suporte a Groovy cobre `.groovy`, `.gradle` e `Jenkinsfile`. Os nomes de chamada perdem blocos de closure e a navegação segura `?.`.
- Cerca de 140 nomes da biblioteca padrão, do Gradle e do Spock, e cerca de 260 métodos do GDK, são filtrados das relações.
- Nomes de DSL de builders, incluindo steps do Jenkins como `stage` e `sh`, são filtrados no estilo builder, e anotações nunca são registradas como chamadas.

## Pontos de entrada MCP úteis

- `find_symbol`: Use para um step de shared library, um helper de build ou uma classe quando precisar da definição e dos chamadores.
- `dependency_search`: Use a travessia incoming em um helper de build para ver quais scripts e pipelines o chamam.
- `text_pattern_search`: Use para chamadas de DSL e métodos do GDK, que são filtrados do grafo.
