Přeskočit na obsah
cd /languages
  • Platformy Apple
  • Programování
  • Podpora AST a symbolů

Swift v Maguyva: grafy kódu pro iOS a macOS

Maguyva podporuje Swift s AST, symboly a grafem, takže AI agenti sledují protokoly, rozšíření, inicializátory a pozorovatele v kódu pro iOS a macOS.

Proč Swift potřebuje víc než vyhledávání v souborech

Swift rozprostírá jeden typ do mnoha míst. Struktura je deklarovaná v jednom souboru, chování získává z rozšíření ve třech dalších a vyhovuje protokolům definovaným v balíčku. Změny stavu se skrývají ve vypočítaných vlastnostech a pozorovatelích willSet / didSet. Agent, který čte jeden soubor po druhém, většinu z toho přehlédne.

Maguyva tuto strukturu indexuje, takže agent vidí členy typu, jeho shody s protokoly i volající pohromadě.

Co Maguyva ve Swiftu extrahuje

Maguyva pokrývá .swift. Volatelné symboly zahrnují funkce, init a deinit, subskripty, gettery a settery vypočítaných vlastností a pozorovatele willSet / didSet, takže kód měnící stav lze vyhledat jako symbol a nezůstane schovaný v tělech vlastností.

Členy deklarované ve strukturách, výčtech, protokolech a rozšířeních se kvalifikují vlastnickým typem (například CartStore.add) a členy přidané v rozšíření se přiřadí rozšiřovanému typu. Z názvů definic se odstraňují generické parametry, seznamy shody s protokoly a přípony ? / !, takže vyhledávání používá prostý název. Volání zachovávají self. a kvalifikaci třídou a koncové uzávěry se započítávají do arity volání.

Graf zaznamenává volání, shodu s protokoly, dědičnost, přepisy, vytváření instancí, atributy, odkazy na typy, čtení a zápisy a hrany throw.

Ukázkové prompty pro agenty

  • „Které typy vyhovují PaymentProvider a kde se každý z nich vytváří?“ (dependency_search)
  • „Kdo volá CartStore.add a ze kterých pohledů?“ (find_symbol, pak dependency_search incoming)
  • „Vysvětli, jak se push notifikace dostane na obrazovku doručené pošty.“ (get_task_context)

Známá omezení

  • Přiřazen je jen zdrojový kód .swift. Soubory Storyboard a XIB nejsou v seznamu přípon, takže propojení z Interface Builderu zůstávají mimo graf.
  • Volání standardní knihovny a Foundation jako print, debugPrint, NSLog a aserce se z vazeb odfiltrují, takže nejsou hranami grafu. K jejich vyhledání použijte text_pattern_search.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte matici podpory na stránce kompatibility. Pokud stejný produkt vydáváte i pro Android, přečtěte si průvodce jazykem Kotlin.

Nejlépe se hodí pro

  • > Týmy pro iOS a macOS s velkými cíli aplikací a sdílenými balíčky ve Swiftu.
  • > Kódové základny postavené na protokolech a rozšířeních, kde je chování jednoho typu rozprostřeno v mnoha souborech.
  • > Pracovní postupy agentů, které před změnou sdíleného modelu, služby nebo protokolu potřebují analýzu dopadu.

Workflow agentů

  • > Najít všechny typy, které vyhovují protokolu, než se změní některý z jeho požadavků.
  • > Dohledat volající metody služby napříč ViewModely, koordinátory a balíčky.
  • > Najít inicializátory, vypočítané vlastnosti a pozorovatele `didSet`, které se dotýkají daného stavu.

Podrobnosti enginu

  • > Volatelné symboly zahrnují funkce, `init`, `deinit`, subskripty, gettery a settery vypočítaných vlastností a pozorovatele `willSet` / `didSet`.
  • > Členy struktur, výčtů, protokolů a rozšíření se kvalifikují vlastnickým typem, například `CartStore.add`.
  • > Z názvů definic se odstraňují generické parametry, seznamy shody s protokoly a přípony `?` / `!` a volání zachovávají `self.` a kvalifikaci třídou.

Užitečné vstupní body MCP

  • find_symbol

    Použijte s názvem typu, protokolu nebo metody, když potřebujete definici a odkazy.

  • dependency_search

    Použijte na protokolu k nalezení vyhovujících typů, nebo směrem incoming na metodě k nalezení volajících.

  • get_task_context

    Použijte pro prompty typu „vysvětli, jak se push notifikace dostane na obrazovku doručené pošty“.