İçeriğe atla
cd /languages
  • Çağdaş JVM
  • Programlama
  • AST ve sembol desteği

Maguyva'da Kotlin: Android ve JVM için kod grafları

Maguyva, Kotlin'i AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları Android ve JVM kodunda sınıfları, uzantı fonksiyonlarını ve coroutine'leri izleyebilir.

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

Kotlin kısadır çünkü bağlantıları gizler. apply, let, also, run ve with, this ve it ifadelerinin anlamını değiştirir. Uzantı fonksiyonları başka yerde tanımlanmış türlere davranış ekler. Coroutine’ler işi launch, async ve withContext arasında taşır. Her seferinde tek dosya okuyan bir ajan çağrıları görür, ama arkalarındaki alıcıları görmez.

Maguyva bu yapının daha büyük bölümünü dizinleme sırasında çözer; böylece bir ajan bir fonksiyonu kimin çağırdığını sorup gerçek yanıtı alabilir.

Maguyva Kotlin’den neleri çıkarır

Maguyva .kt ve .kts dosyalarını kapsar. Fonksiyonlar, sınıflar, nesneler ve companion nesneler çıkarılır; fonksiyon imzaları uzantı alıcılarını, parametre adlarını, varsayılan değerleri ve vararg parametrelerini kaydeder.

Çağrı ilişkileri sınıfla nitelenmiş adları korur; böylece OrderRepository.save başka bir save ile karışmaz. Alıcı türlemesi apply ve run içindeki this ifadesini, let ve also içindeki it ifadesini ve with argümanını izler; böylece kapsam fonksiyonlarının içindeki çağrılar doğru türe çözülür. Coroutine oluşturucuları ve Flow operatörleri (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) grafta bilinçli olarak tutulur.

Graf ayrıca kalıtımı, arayüz uygulamasını, geçersiz kılmaları, örneklemeyi, anotasyonları, tür referanslarını, okuma ve yazmaları ve istisna fırlatma ve yakalama kenarlarını kaydeder.

Örnek ajan istemleri

  • “CheckoutUseCase.invoke yöntemini kim, hangi ViewModel’lerden çağırıyor?” (find_symbol, ardından gelen yönde dependency_search)
  • “Senkronizasyon akışını SyncWorker sınıfından ağ istemcisine kadar izle.” (get_task_context)
  • “Hangi sınıflar PaymentGateway arayüzünü uyguluyor?” (dependency_search)

Bilinen sınırlar

  • Yaklaşık 250 Kotlin standart kütüphane ve platform çağrısı ilişkilerden filtrelenir; bu nedenle listOf, map, filter ve println gibi yardımcılar graf kenarı değildir. Bunlar için 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. Karma kod tabanları için Java rehberini de okuyun.

En uygun kullanım

  • > ViewModel'lerin, repository'lerin ve use case'lerin modül sınırları ötesinde birbirini çağırdığı büyük, çok modüllü uygulamalara sahip Android ekipleri.
  • > Kotlin'i eski Java koduyla birleştiren sunucu tarafı Kotlin ve Kotlin/JVM hizmetleri.
  • > Ajanların uygulama koduyla birlikte okuması gereken, Kotlin betiğiyle (`.kts`) yazılmış Gradle yapılandırmaları.

Ajan iş akışları

  • > API'si değişmeden önce bir repository veya use case sınıfını çağıran herkesi bulmak.
  • > Bir coroutine akışını ViewModel'deki `launch` çağrısından `withContext` üzerinden veri katmanına kadar izlemek.
  • > Bir yeniden yapılandırmadan önce bir arayüzü uygulayan veya bir temel yöntemi geçersiz kılan sınıfları haritalamak.

Motor ayrıntıları

  • > Kotlin desteği `.kt` ve `.kts` dosyalarını kapsar. İmzalar uzantı alıcılarını, parametre adlarını, varsayılan değerleri ve `vararg` parametrelerini kaydeder.
  • > Alıcı türlemesi `apply` ve `run` içindeki `this` ifadesini, `let` ve `also` içindeki `it` ifadesini ve `with` argümanını izler; çağrılar sınıfla nitelenmiş adları korur.
  • > `launch`, `withContext` ve `flow` gibi coroutine oluşturucuları ve Flow operatörleri grafta kalır; yaklaşık 250 standart kütüphane çağrısı filtrelenir.

Yararlı MCP giriş noktaları

  • find_symbol

    Tanıma ve referanslara ihtiyacınız olduğunda bir sınıf, use case veya uzantı fonksiyonu için kullanın.

  • dependency_search

    Bir API değişikliğinden önce çağıranları ve uygulamaları görmek için bir repository'de veya arayüzde gelen yönde dolaşım kullanın.

  • get_task_context

    "Senkronizasyon akışını `SyncWorker` sınıfından ağ istemcisine kadar izle" gibi istemler için kullanın.