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

Canonical source: https://maguyva.ai/tr/languages/scala

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, 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.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .sc, .scala
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## 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.

## 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ıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Karma JVM kod tabanları için [Java rehberini](/tr/languages/java) ve [Kotlin rehberini](/tr/languages/kotlin) de okuyun.

## 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.
