Pular para o conteúdo
cd /languages
  • Scripting na JVM
  • Programação
  • Suporte a AST e símbolos

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

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.

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 e depois confira a matriz de suporte na página de compatibilidade. Para o código JVM que seus builds compilam, leia o guia de Java e o guia de Kotlin.

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.

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.