Lompat ke konten
cd /languages
  • Skrip JVM
  • Pemrograman
  • Dukungan AST dan simbol

Groovy di Maguyva: graf kode untuk Gradle dan Jenkins

Maguyva mendukung Groovy dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri kelas, closure, dan panggilan di aplikasi Groovy, build Gradle, dan Jenkinsfile.

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, lalu periksa matriks dukungan di halaman kompatibilitas. Untuk kode JVM yang dikompilasi oleh build Anda, baca panduan Java dan panduan Kotlin.

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.

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.