İçeriğe atla
cd /languages
  • JVM betikleri
  • Programlama
  • AST ve sembol desteği

Maguyva'da Groovy: Gradle ve Jenkins kodu için kod grafları

Maguyva, Groovy'yi AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları Groovy uygulamalarında, Gradle derlemelerinde ve Jenkinsfile'larda sınıfları, closure'ları ve çağrıları izleyebilir.

Groovy yüzeysel yapay zeka araçlarını nerede şaşırtır

Groovy çoğu zaman yapılandırma gibi okunur. Bir Gradle derlemesinde dependencies { implementation ... }, closure’lar içeren bir metot çağrısı zinciridir; bildirime dayalı bir Jenkinsfile da öyle. Builder’lar keyfi adları çağrıya dönüştürür, GDK ise her nesneye each ve collect gibi metotlar ekler. Her çağrıyı kaydeden bir araç bu gürültüde boğulur.

Maguyva DSL ve GDK katmanını filtreler; böylece kendi metotlarınız ve sınıflarınız öne çıkar.

Maguyva Groovy’den neleri çıkarır

Maguyva .groovy ve .gradle dosyalarını ve Jenkinsfile dosyasını kapsar. Sınıflar, fonksiyonlar ve metotlar çıkarılır; içe aktarmalar import static ve as takma adlarını normalleştirir. Çağrı adlarından sondaki closure blokları ve ?. güvenli gezinme işleci temizlenir; böylece repo?.save(order) { ... }, save çağrısı olarak kaydedilir. Bir sınıf içinde alıcısız yapılan çağrı, o sınıfın kendi metoduna çözülür.

Gürültü katmanlar halinde filtrelenir:

  • dependencies, implementation, task, given, when, then ve Mock gibi yaklaşık 140 standart kütüphane, Gradle ve Spock adı.
  • each, collect, inject ve eachLine gibi yaklaşık 260 GDK metodu.
  • pipeline, stage, steps ve sh gibi Jenkins adımları dahil builder DSL adları; parantezle çağrılmak yerine builder tarzında kullanıldıklarında.
  • @CompileStatic, @Immutable ve @Autowired gibi AST dönüşümü ve framework ek açıklamaları; bunlar hiçbir zaman çağrı olarak kaydedilmez.

Graf ayrıca kalıtımı, örneklemeyi ve okuma ve yazmaları kaydeder.

Örnek ajan istemleri

  • “deployToStaging’u kim çağırıyor ve hangi pipeline’lardan?” (find_symbol, ardından dependency_search incoming)
  • “Hangi sınıflar BaseIntegrationSpec’ten kalıtım alıyor?” (dependency_search)
  • “Sürüm görevinin yapıtları nasıl derleyip yayımladığını açıkla.” (get_task_context)

Bilinen sınırlar

  • Groovy metotları ve serbest fonksiyonlar aynı sözdizimi düğümünü paylaşır; bu yüzden structural_search içindeki methods hazır ayarı hiçbir şey seçmez. Bunun yerine functions hazır ayarını veya find_symbol kullanın.
  • collect veya stage gibi bir GDK ya da DSL metoduyla aynı adı taşıyan kendi metodunuz onlarla birlikte filtrelenebilir. Bir çağıran eksik görünüyorsa text_pattern_search kullanın.

Sonraki adımlar

Hızlı başlangıç ile bir repo bağlayın, ardından destek matrisi için uyumluluk sayfasına bakın. Derlemelerinizin derlediği JVM kodu için Java rehberini ve Kotlin rehberini okuyun.

En uygun kullanım

  • > Paylaşılan derleme mantığının birçok `.gradle` dosyasına dağıldığı, Groovy ile yazılmış Gradle derlemeleri.
  • > Ajanların CI'yı değiştirmeden önce okuması gereken Jenkins pipeline'ları ve paylaşılan kütüphaneler.
  • > JVM üzerindeki Groovy uygulamaları ve Spock test paketleri.

Ajan iş akışları

  • > Paylaşılan bir kütüphane adımının argümanlarını değiştirmeden önce tüm çağıranlarını bulmak.
  • > Ortak bir `.gradle` dosyasında tanımlı bir yardımcıyı hangi derleme betiklerinin çağırdığını izlemek.
  • > Bir yeniden düzenlemeden önce hangi sınıfların bir taban sınıftan kalıtım aldığını haritalamak.

Motor ayrıntıları

  • > Groovy desteği `.groovy`, `.gradle` ve `Jenkinsfile` dosyalarını kapsar. Çağrı adlarından closure blokları ve `?.` güvenli gezinmesi kaldırılır.
  • > Yaklaşık 140 standart kütüphane, Gradle ve Spock adı ile yaklaşık 260 GDK metodu ilişkilerden filtrelenir.
  • > `stage` ve `sh` gibi Jenkins adımları dahil builder DSL adları builder tarzında filtrelenir; ek açıklamalar hiçbir zaman çağrı olarak kaydedilmez.

Yararlı MCP giriş noktaları

  • find_symbol

    Tanıma ve çağıranlara ihtiyaç duyduğunuzda paylaşılan bir kütüphane adımı, derleme yardımcısı veya sınıf için kullanın.

  • dependency_search

    Hangi betiklerin ve pipeline'ların bir derleme yardımcısını çağırdığını görmek için incoming geçişi kullanın.

  • text_pattern_search

    Graftan filtrelenen DSL çağrıları ve GDK metotları için kullanın.