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

Maguyva'da Scala: JVM servisleri ve Spark için kod grafları

Maguyva, Scala'yı AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları JVM ve Spark kodunda trait'leri, nesneleri, case class'ları ve tür belirtilmiş çağrıları izleyebilir.

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

Scala’da tek bir ad çok yük taşır. Bir trait, eşlik eden nesnesi ve bir case class aynı kavramı paylaşabilir. Desen eşleme case yan tümcelerinin içinde yeni adlar bağlar; bir sınıf içinde alıcısız çağrılan metot da this üzerinde bir çağrıdır. Dosyaları birer birer okuyan bir ajan adları görür ama neye çözüldüklerini göremez.

Maguyva bunun daha fazlasını dizinleme sırasında çözer; böylece ajan bir metodu kimin çağırdığını sorduğunda üzerine harekete geçebileceği bir yanıt alır.

Maguyva Scala’dan neleri çıkarır

Maguyva .scala ve .sc dosyalarını kapsar. Sınıflar, nesneler ve trait’ler tür olarak çıkarılır; structural_search içindeki functions hazır ayarı def bildirimlerini, tanımlarını ve lambda’ları kapsar. İmzalar tekrarlanan (*) parametreleri kaydeder; içe aktarmalardan _root_ öneki kaldırılır.

Çağrı ilişkileri sınıfla nitelenmiş adları korur; bir sınıf içindeki alıcısız çağrı o sınıfın kendi metoduna çözülür. Alıcı türlemesi parametreleri, sınıf parametrelerini, val ve var tanımlarını, case yan tümcelerindeki tür belirtilmiş desenleri ve case class desenlerini, sınıf, nesne ve trait metotlarının dönüş türlerini, tür takma adlarını ve extends yan tümcelerini izler. Büyük harfle başlayan bir türde new örnekleme sayılır.

Scala için hiçbir ilişki türü uygulanamaz olarak işaretlenmemiştir; bu yüzden graf ayrıca kalıtımı, geçersiz kılmaları, tür başvurularını, okuma ve yazmaları, kontrol akışını ve istisna kenarlarını kaydeder.

Örnek ajan istemleri

  • “PaymentService.capture’ı kim çağırıyor ve hangi rotalardan?” (find_symbol, ardından dependency_search incoming)
  • “Hangi sınıflar ve nesneler EventHandler’ı genişletiyor?” (dependency_search)
  • “Bir sipariş olayının defter yazıcısına nasıl ulaştığını izle.” (get_task_context)

Bilinen sınırlar

  • Yaklaşık 320 standart kütüphane adı ilişkilerden filtrelenir: map, flatMap ve foldLeft gibi koleksiyon işlemleri ile Option, Either, Try, Future ve Predef yardımcıları. this üzerinde ya da türü sizin sınıflarınızdan birine çözülen bir değer üzerinde yapılan çağrı, adı bu listede olsa bile korunur. Bir çağıran hâlâ eksik görünüyorsa text_pattern_search kullanın.
  • A, F ve CC gibi kısa tür parametreleri ile Any, Unit ve Nothing gibi kök türler tür başvurularından filtrelenir.

Sonraki adımlar

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

En uygun kullanım

  • > Trait'lerin, eşlik eden nesnelerin ve case class'ların tek bir kavramı birçok dosyaya yaydığı, Scala ile yazılmış JVM servisleri.
  • > Ajanların çağırdıkları paylaşılan kütüphanelerle birlikte okuması gereken Spark ve veri mühendisliği işleri.
  • > Ajanların tek bir kod tabanı olarak araması gereken karma Scala ve Java repoları.

Ajan iş akışları

  • > Bir servis metodunun imzasını değiştirmeden önce tüm çağıranlarını bulmak.
  • > Soyut bir üye eklemeden önce bir trait'i genişleten sınıfları ve nesneleri listelemek.
  • > Bir isteğin HTTP rotasından servisler üzerinden veri katmanına nasıl ilerlediğini izlemek.

Motor ayrıntıları

  • > Scala desteği `.scala` ve `.sc` dosyalarını kapsar. Sınıflar, nesneler ve trait'ler türdür; bir sınıf içindeki alıcısız çağrılar sınıfın kendi metotlarına çözülür.
  • > Alıcı türlemesi parametreleri, sınıf parametrelerini, `val` ve `var` tanımlarını, `case` desenlerini, metot dönüş türlerini ve `extends` yan tümcelerini izler.
  • > Çağrılar sınıfla nitelenmiş adları korur, `new` örnekleme sayılır ve yaklaşık 320 standart kütüphane adı ilişkilerden filtrelenir.

Yararlı MCP giriş noktaları

  • find_symbol

    Tanıma ve başvurulara ihtiyaç duyduğunuzda bir trait, nesne veya servis metodu için kullanın.

  • dependency_search

    Bir imzayı değiştirmeden önce uygulayıcıları ve çağıranları görmek için bir trait veya metot üzerinde incoming geçişi kullanın.

  • get_task_context

    "Bir sipariş olayının defter yazıcısına nasıl ulaştığını izle" gibi istemler için kullanın.