# Groovy di Maguyva: graf kode untuk Gradle dan Jenkins

Canonical source: https://maguyva.ai/id/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 mendukung Groovy dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri kelas, closure, dan panggilan di aplikasi Groovy, build Gradle, dan Jenkinsfile.

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .gradle, .groovy, .jenkinsfile
- Parsing AST sungguhan untuk pencarian sadar-syntax dan konteks struktural.
- Simbol bernama menggerakkan pencarian semantik dan cross-reference. Navigasi graf tersedia saat ekstraksi relasi diaktifkan.
- Bahasa ini menyumbangkan simbol dan relasi ke pencarian berbasis graf; jenis edge yang didukung bervariasi sesuai konstruk bawaan bahasa tersebut.
- Parsing AST dan ekstraksi simbol sama-sama tersedia.

## Paling cocok untuk

- Build Gradle yang ditulis dengan Groovy, dengan logika build bersama yang tersebar di banyak berkas `.gradle`.
- Pipeline Jenkins dan pustaka bersama yang perlu dibaca agen sebelum mengubah CI.
- Aplikasi Groovy di JVM dan rangkaian pengujian Spock.

## Workflow agent

- Menemukan semua pemanggil langkah pustaka bersama sebelum mengubah argumennya.
- Menelusuri skrip build mana yang memanggil pembantu yang didefinisikan di berkas `.gradle` bersama.
- Memetakan kelas mana yang mewarisi dari sebuah kelas dasar sebelum refaktor.

## Di mana Groovy menjebak alat AI yang dangkal

Groovy sering terbaca seperti konfigurasi. Dalam build Gradle, `dependencies { implementation ... }` adalah rangkaian panggilan metode dengan closure, begitu pula Jenkinsfile deklaratif. Builder mengubah nama sembarang menjadi panggilan, dan GDK menambahkan metode seperti `each` dan `collect` ke setiap objek. Alat yang mencatat setiap panggilan akan tenggelam dalam kebisingan ini.

Maguyva memfilter lapisan DSL dan GDK, sehingga metode dan kelas Anda sendiri menonjol.

## Apa yang diekstrak Maguyva dari Groovy

Maguyva mencakup berkas `.groovy` dan `.gradle` serta `Jenkinsfile`. Kelas, fungsi, dan metode diekstrak, dan impor menormalkan alias `import static` dan `as`. Blok closure di akhir dan operator navigasi aman `?.` dihapus dari nama panggilan, sehingga `repo?.save(order) { ... }` tercatat sebagai panggilan ke `save`. Panggilan tanpa penerima di dalam kelas diselesaikan ke metode milik kelas itu sendiri.

Kebisingan difilter berlapis:

- Sekitar 140 nama pustaka standar, Gradle, dan Spock, seperti `dependencies`, `implementation`, `task`, `given`, `when`, `then`, dan `Mock`.
- Sekitar 260 metode GDK, seperti `each`, `collect`, `inject`, dan `eachLine`.
- Nama DSL builder, termasuk langkah Jenkins seperti `pipeline`, `stage`, `steps`, dan `sh`, saat dipakai bergaya builder dan bukan dipanggil dengan tanda kurung.
- Anotasi transformasi AST dan framework seperti `@CompileStatic`, `@Immutable`, dan `@Autowired`, yang tidak pernah dicatat sebagai panggilan.

Graf juga mencatat pewarisan, instansiasi, serta pembacaan dan penulisan.

## Contoh prompt agen

- "Siapa yang memanggil `deployToStaging`, dan dari pipeline mana saja?" (`find_symbol`, lalu `dependency_search` incoming)
- "Kelas mana saja yang mewarisi dari `BaseIntegrationSpec`?" (`dependency_search`)
- "Jelaskan bagaimana tugas rilis membangun dan menerbitkan artefak." (`get_task_context`)

## Batasan yang diketahui

- Metode Groovy dan fungsi bebas berbagi node sintaksis yang sama, sehingga preset `methods` di `structural_search` tidak memilih apa pun. Gunakan preset `functions` atau `find_symbol` sebagai gantinya.
- Metode Anda sendiri yang namanya sama dengan metode GDK atau DSL, seperti `collect` atau `stage`, bisa ikut terfilter. Jika sebuah pemanggil tampak hilang, gunakan `text_pattern_search`.

## Langkah berikutnya

Hubungkan repositori dengan [panduan memulai cepat](/id/docs/quickstart), lalu periksa matriks dukungan di [halaman kompatibilitas](/id/docs/compatibility). Untuk kode JVM yang dikompilasi oleh build Anda, baca [panduan Java](/id/languages/java) dan [panduan Kotlin](/id/languages/kotlin).

## Detail engine

- Dukungan Groovy mencakup berkas `.groovy`, `.gradle`, dan `Jenkinsfile`. Blok closure dan navigasi aman `?.` dihapus dari nama panggilan.
- Sekitar 140 nama pustaka standar, Gradle, dan Spock serta sekitar 260 metode GDK difilter dari relasi.
- Nama DSL builder, termasuk langkah Jenkins seperti `stage` dan `sh`, difilter saat dipakai bergaya builder; anotasi tidak pernah dicatat sebagai panggilan.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk langkah pustaka bersama, pembantu build, atau kelas saat Anda membutuhkan definisi dan pemanggilnya.
- `dependency_search`: Gunakan penelusuran incoming untuk melihat skrip dan pipeline mana yang memanggil pembantu build.
- `text_pattern_search`: Gunakan untuk panggilan DSL dan metode GDK yang difilter dari graf.
