# Groovy dalam Maguyva: graf kod untuk Gradle dan Jenkins

Canonical source: https://maguyva.ai/ms/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 menyokong Groovy dengan AST, simbol dan graf, supaya ejen AI boleh menjejak kelas, closure dan panggilan dalam aplikasi Groovy, binaan Gradle dan Jenkinsfile.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Pengaturcaraan
- Sambungan fail: .gradle, .groovy, .jenkinsfile
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Binaan Gradle yang ditulis dalam Groovy, dengan logik binaan dikongsi yang tersebar di banyak fail `.gradle`.
- Pipeline Jenkins dan pustaka dikongsi yang perlu dibaca ejen sebelum mengubah CI.
- Aplikasi Groovy pada JVM dan suite ujian Spock.

## Aliran kerja ejen

- Mencari semua pemanggil langkah pustaka dikongsi sebelum mengubah argumennya.
- Menjejak skrip binaan mana yang memanggil pembantu yang ditakrifkan dalam fail `.gradle` dikongsi.
- Memetakan kelas mana yang mewarisi daripada kelas asas sebelum pemfaktoran semula.

## Di mana Groovy memerangkap alat AI yang cetek

Groovy sering dibaca seperti konfigurasi. Dalam binaan Gradle, `dependencies { implementation ... }` ialah rantaian panggilan kaedah dengan closure, begitu juga Jenkinsfile deklaratif. Builder menukar nama sewenang-wenangnya kepada panggilan, dan GDK menambah kaedah seperti `each` dan `collect` pada setiap objek. Alat yang merekodkan setiap panggilan akan tenggelam dalam hingar ini.

Maguyva menapis lapisan DSL dan GDK, supaya kaedah dan kelas anda sendiri menonjol.

## Apa yang diekstrak oleh Maguyva daripada Groovy

Maguyva merangkumi fail `.groovy` dan `.gradle` serta `Jenkinsfile`. Kelas, fungsi dan kaedah diekstrak, dan import menormalkan alias `import static` dan `as`. Blok closure di hujung dan operator navigasi selamat `?.` dibuang daripada nama panggilan, jadi `repo?.save(order) { ... }` direkodkan sebagai panggilan kepada `save`. Panggilan tanpa penerima di dalam kelas diselesaikan kepada kaedah kelas itu sendiri.

Hingar ditapis secara berlapis:

- Kira-kira 140 nama pustaka standard, Gradle dan Spock, seperti `dependencies`, `implementation`, `task`, `given`, `when`, `then` dan `Mock`.
- Kira-kira 260 kaedah GDK, seperti `each`, `collect`, `inject` dan `eachLine`.
- Nama DSL builder, termasuk langkah Jenkins seperti `pipeline`, `stage`, `steps` dan `sh`, apabila digunakan gaya builder dan bukan dipanggil dengan kurungan.
- Anotasi transformasi AST dan rangka kerja seperti `@CompileStatic`, `@Immutable` dan `@Autowired`, yang tidak pernah direkodkan sebagai panggilan.

Graf juga merekodkan pewarisan, instansiasi, serta bacaan dan tulisan.

## Contoh gesaan ejen

- "Siapa yang memanggil `deployToStaging`, dan daripada pipeline mana?" (`find_symbol`, kemudian `dependency_search` arah masuk)
- "Kelas mana yang mewarisi daripada `BaseIntegrationSpec`?" (`dependency_search`)
- "Terangkan bagaimana tugas keluaran membina dan menerbitkan artifak." (`get_task_context`)

## Had yang diketahui

- Kaedah Groovy dan fungsi bebas berkongsi nod sintaks yang sama, jadi pratetap `methods` dalam `structural_search` tidak memilih apa-apa. Gunakan pratetap `functions` atau `find_symbol` sebagai gantinya.
- Kaedah anda sendiri yang sama nama dengan kaedah GDK atau DSL, seperti `collect` atau `stage`, boleh turut ditapis. Jika seorang pemanggil kelihatan hilang, gunakan `text_pattern_search`.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Untuk kod JVM yang dikompil oleh binaan anda, baca [panduan Java](/ms/languages/java) dan [panduan Kotlin](/ms/languages/kotlin).

## Butiran enjin

- Sokongan Groovy merangkumi fail `.groovy`, `.gradle` dan `Jenkinsfile`. Blok closure dan navigasi selamat `?.` dibuang daripada nama panggilan.
- Kira-kira 140 nama pustaka standard, Gradle dan Spock serta kira-kira 260 kaedah GDK ditapis daripada hubungan.
- Nama DSL builder, termasuk langkah Jenkins seperti `stage` dan `sh`, ditapis apabila digunakan gaya builder; anotasi tidak pernah direkodkan sebagai panggilan.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk langkah pustaka dikongsi, pembantu binaan atau kelas apabila anda memerlukan takrifan dan pemanggilnya.
- `dependency_search`: Gunakan penelusuran arah masuk untuk melihat skrip dan pipeline mana yang memanggil pembantu binaan.
- `text_pattern_search`: Gunakan untuk panggilan DSL dan kaedah GDK yang ditapis daripada graf.
