İçeriğe atla
cd /languages
  • Apple platformları
  • Programlama
  • AST ve sembol desteği

Maguyva'da Swift: iOS ve macOS için kod grafları

Maguyva, Swift'i AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları iOS ve macOS kodunda protokolleri, uzantıları, başlatıcıları ve gözlemcileri izleyebilir.

Swift neden dosya aramasından fazlasını gerektirir

Swift bir türü birçok yere yayar. Bir struct bir dosyada bildirilir, üç başka dosyadaki uzantılardan davranış kazanır ve bir pakette tanımlanmış protokollere uyar. Durum değişiklikleri hesaplanan özelliklerde ve willSet / didSet gözlemcilerinde gizlenir. Her seferinde tek dosya okuyan bir ajan bunların çoğunu kaçırır.

Maguyva bu yapıyı dizinler; böylece ajan bir türün üyelerini, uyumlarını ve onu çağıranları birlikte görür.

Maguyva Swift’ten neleri çıkarır

Maguyva .swift dosyalarını kapsar. Çağrılabilir semboller fonksiyonları, init ve deinit bloklarını, subscript’leri, hesaplanan özelliklerin getter ve setter’larını ve willSet / didSet gözlemcilerini içerir; böylece durumu değiştiren kod özellik gövdelerinde kaybolmak yerine sembol olarak aranabilir.

Struct, enum, protokol ve uzantılarda bildirilen üyeler sahip türleriyle nitelenir (örneğin CartStore.add); bir uzantıda eklenen üyeler genişletilen türe atfedilir. Generic parametreler, protokol uyum listeleri ve ? / ! sonekleri tanım adlarından kaldırılır, böylece aramalar yalın adı kullanır. Çağrılar self. ve sınıf niteleyicisini korur; sondaki kapanışlar çağrının argüman sayısına dahil edilir.

Graf çağrıları, protokol uyumunu, kalıtımı, geçersiz kılmaları, örneklemeyi, öznitelikleri, tür referanslarını, okuma ve yazmaları ve throw kenarlarını kaydeder.

Örnek ajan istemleri

  • “Hangi türler PaymentProvider protokolüne uyuyor ve her biri nerede oluşturuluyor?” (dependency_search)
  • “CartStore.add yöntemini kim, hangi görünümlerden çağırıyor?” (find_symbol, ardından gelen yönde dependency_search)
  • “Bir anlık bildirimin gelen kutusu ekranına nasıl ulaştığını açıkla.” (get_task_context)

Bilinen sınırlar

  • Yalnızca .swift kaynak kodu eşlenir. Storyboard ve XIB dosyaları uzantı listesinde yer almaz; bu nedenle Interface Builder bağlantıları grafın dışında kalır.
  • print, debugPrint, NSLog ve doğrulamalar gibi standart kütüphane ve Foundation çağrıları ilişkilerden filtrelenir; bu nedenle 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. Aynı ürünü Android’de de sunuyorsanız Kotlin rehberini okuyun.

En uygun kullanım

  • > Büyük uygulama hedeflerine ve ortak Swift paketlerine sahip iOS ve macOS ekipleri.
  • > Bir türün davranışının birçok dosyaya dağıldığı, protokoller ve uzantılar etrafında kurulmuş kod tabanları.
  • > Ortak bir model, hizmet veya protokol değişmeden önce etki analizine ihtiyaç duyan ajan iş akışları.

Ajan iş akışları

  • > Bir protokolün gereksinimlerinden biri değişmeden önce ona uyan her türü bulmak.
  • > Bir hizmet yöntemini ViewModel'ler, koordinatörler ve paketler genelinde çağıranları izlemek.
  • > Bir duruma dokunan başlatıcıları, hesaplanan özellikleri ve `didSet` gözlemcilerini bulmak.

Motor ayrıntıları

  • > Çağrılabilir semboller fonksiyonları, `init`, `deinit`, subscript'leri, hesaplanan özelliklerin getter ve setter'larını ve `willSet` / `didSet` gözlemcilerini içerir.
  • > Struct, enum, protokol ve uzantı üyeleri, `CartStore.add` gibi, sahip türleriyle nitelenir.
  • > Generic parametreler, protokol uyum listeleri ve `?` / `!` sonekleri tanım adlarından kaldırılır; çağrılar `self.` ve sınıf niteleyicisini korur.

Yararlı MCP giriş noktaları

  • find_symbol

    Tanıma ve referanslara ihtiyacınız olduğunda bir tür, protokol veya yöntem adıyla kullanın.

  • dependency_search

    Uyan türleri bulmak için bir protokolde, çağıranları bulmak için bir yöntemde gelen yönde kullanın.

  • get_task_context

    "Bir anlık bildirimin gelen kutusu ekranına nasıl ulaştığını açıkla" gibi istemler için kullanın.