Перейти к содержимому
cd /languages
  • Скрипты на JVM
  • Программирование
  • Поддержка AST и символов

Groovy в Maguyva: графы кода для Gradle и Jenkins

Maguyva поддерживает Groovy с AST, символами и графом, чтобы ИИ-агенты могли прослеживать классы, замыкания и вызовы в приложениях на Groovy, сборках Gradle и файлах Jenkinsfile.

Где Groovy сбивает с толку поверхностные ИИ-инструменты

Groovy часто читается как конфигурация. В сборке Gradle dependencies { implementation ... } представляет собой цепочку вызовов методов с замыканиями, и декларативный Jenkinsfile устроен так же. Билдеры превращают произвольные имена в вызовы, а GDK добавляет каждому объекту методы вроде each и collect. Инструмент, который записывает каждый вызов, тонет в этом шуме.

Maguyva отфильтровывает слой DSL и GDK, чтобы ваши собственные методы и классы были на виду.

Что Maguyva извлекает из Groovy

Maguyva охватывает файлы .groovy и .gradle, а также Jenkinsfile. Извлекаются классы, функции и методы, а импорты нормализуют псевдонимы import static и as. Завершающие блоки замыканий и оператор безопасной навигации ?. удаляются из имён вызовов, поэтому repo?.save(order) { ... } записывается как вызов save. Вызов без получателя внутри класса разрешается в собственный метод этого класса.

Шум отфильтровывается послойно:

  • Около 140 имён стандартной библиотеки, Gradle и Spock, таких как dependencies, implementation, task, given, when, then и Mock.
  • Около 260 методов GDK, таких как each, collect, inject и eachLine.
  • Имена DSL билдеров, включая шаги Jenkins вроде pipeline, stage, steps и sh, когда они используются в стиле билдера, а не вызываются со скобками.
  • Аннотации AST-преобразований и фреймворков, такие как @CompileStatic, @Immutable и @Autowired, которые никогда не записываются как вызовы.

Граф также фиксирует наследование, создание экземпляров, чтение и запись.

Примеры промптов для агентов

  • «Кто вызывает deployToStaging и из каких конвейеров?» (find_symbol, затем dependency_search по входящим связям)
  • «Какие классы наследуют от BaseIntegrationSpec?» (dependency_search)
  • «Объясни, как задача выпуска собирает и публикует артефакты.» (get_task_context)

Известные ограничения

  • Методы Groovy и свободные функции используют один и тот же синтаксический узел, поэтому пресет methods в structural_search ничего не выбирает. Используйте вместо него пресет functions или find_symbol.
  • Ваш метод, имя которого совпадает с методом GDK или DSL, например collect или stage, может быть отфильтрован вместе с ними. Если кажется, что вызывающий код пропал, используйте text_pattern_search.

Следующие шаги

Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для кода на JVM, который компилируют ваши сборки, прочитайте руководство по Java и руководство по Kotlin.

Лучше всего подходит

  • > Сборки Gradle на Groovy, где общая логика сборки разбросана по множеству файлов `.gradle`.
  • > Конвейеры Jenkins и общие библиотеки, которые агентам нужно прочитать перед изменением CI.
  • > Приложения на Groovy для JVM и наборы тестов Spock.

Сценарии работы агента

  • > Найти все вызовы шага общей библиотеки, прежде чем менять его аргументы.
  • > Проследить, какие скрипты сборки вызывают вспомогательную функцию, объявленную в общем файле `.gradle`.
  • > Составить карту классов, наследующих от базового класса, перед рефакторингом.

Детали движка

  • > Поддержка Groovy охватывает файлы `.groovy`, `.gradle` и `Jenkinsfile`. Блоки замыканий и безопасная навигация `?.` удаляются из имён вызовов.
  • > Около 140 имён стандартной библиотеки, Gradle и Spock и около 260 методов GDK отфильтрованы из связей.
  • > Имена DSL билдеров, включая шаги Jenkins вроде `stage` и `sh`, отфильтровываются при использовании в стиле билдера; аннотации никогда не записываются как вызовы.

Полезные точки входа MCP

  • find_symbol

    Используйте для шага общей библиотеки, вспомогательной функции сборки или класса, когда нужны определение и вызовы.

  • dependency_search

    Используйте обход входящих связей, чтобы увидеть, какие скрипты и конвейеры вызывают вспомогательную функцию сборки.

  • text_pattern_search

    Используйте для вызовов DSL и методов GDK, отфильтрованных из графа.