# Groovy у Maguyva: графи коду для Gradle і Jenkins

Canonical source: https://maguyva.ai/uk/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 підтримує Groovy з AST, символами та графом, щоб ШІ-агенти могли простежувати класи, замикання й виклики в застосунках на Groovy, збірках Gradle і файлах Jenkinsfile.

## Знімок підтримки

- Рівень: Підтримка AST і символів
- Програмування
- Розширення: .gradle, .groovy, .jenkinsfile
- Справжній розбір AST для пошуку з урахуванням синтаксису та структурного контексту.
- Іменовані символи забезпечують семантичний пошук і перехресні посилання. Навігація графом доступна, коли ввімкнено видобування зв’язків.
- Ця мова додає символи та зв’язки до пошуку з урахуванням графа; підтримувані типи ребер залежать від притаманних їй конструкцій.
- Доступні як розбір AST, так і видобування символів.

## Найкраще підходить

- Збірки Gradle на Groovy, де спільна логіка збирання розкидана по багатьох файлах `.gradle`.
- Конвеєри Jenkins і спільні бібліотеки, які агентам треба прочитати перед зміною CI.
- Застосунки на Groovy для JVM і набори тестів Spock.

## Робочі процеси агента

- Знайти всі виклики кроку спільної бібліотеки, перш ніж змінювати його аргументи.
- Простежити, які скрипти збирання викликають допоміжну функцію, оголошену в спільному файлі `.gradle`.
- Скласти карту класів, що успадковують від базового класу, перед рефакторингом.

## Де 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`.

## Наступні кроки

Під'єднайте репозиторій за [швидким стартом](/uk/docs/quickstart), потім перегляньте матрицю підтримки на [сторінці сумісності](/uk/docs/compatibility). Для коду на JVM, який компілюють ваші збірки, прочитайте [посібник із Java](/uk/languages/java) і [посібник із Kotlin](/uk/languages/kotlin).

## Деталі рушія

- Підтримка Groovy охоплює файли `.groovy`, `.gradle` і `Jenkinsfile`. Блоки замикань і безпечна навігація `?.` вилучаються з імен викликів.
- Близько 140 імен стандартної бібліотеки, Gradle і Spock та близько 260 методів GDK відфільтровано зі зв'язків.
- Імена DSL білдерів, зокрема кроки Jenkins на кшталт `stage` і `sh`, відфільтровуються, коли використані в стилі білдера; анотації ніколи не записуються як виклики.

## Корисні точки входу MCP

- `find_symbol`: Використовуйте для кроку спільної бібліотеки, допоміжної функції збирання чи класу, коли потрібні визначення й виклики.
- `dependency_search`: Використовуйте обхід вхідних зв'язків, щоб побачити, які скрипти й конвеєри викликають допоміжну функцію збирання.
- `text_pattern_search`: Використовуйте для викликів DSL і методів GDK, відфільтрованих із графа.
