Hoppa till innehåll
cd /languages
  • Apples plattformar
  • Programmering
  • Stöd för AST och symboler

Swift i Maguyva: kodgrafer för iOS och macOS

Maguyva stöder Swift med AST, symboler och graf, så att AI-agenter kan följa protokoll, extensions, initierare och observatörer i iOS- och macOS-kod.

Varför Swift behöver mer än filsökning

Swift sprider ut en typ på många ställen. En struct deklareras i en fil, får beteende från extensions i tre andra och uppfyller protokoll som definieras i ett paket. Tillståndsändringar gömmer sig i beräknade egenskaper och willSet / didSet-observatörer. En agent som läser en fil i taget missar det mesta.

Maguyva indexerar strukturen, så att en agent ser en typs medlemmar, protokolluppfyllelser och anropare tillsammans.

Vad Maguyva extraherar i Swift

Maguyva täcker .swift. Anropbara symboler omfattar funktioner, init och deinit, subscripts, getters och setters för beräknade egenskaper samt willSet / didSet-observatörer, så att kod som ändrar tillstånd är sökbar som symboler i stället för att begravas i egenskapskroppar.

Medlemmar som deklareras i structs, enums, protokoll och extensions kvalificeras med sin ägartyp (till exempel CartStore.add), och medlemmar som läggs till i en extension tillskrivs den utökade typen. Generiska parametrar, listor över protokolluppfyllelse och suffixen ? / ! tas bort ur definitionsnamnen, så uppslag använder det rena namnet. Anrop behåller self. och klasskvalificering, och trailing closures räknas med i anropets aritet.

Grafen registrerar anrop, protokolluppfyllelse, arv, överskrivningar, instansiering, attribut, typreferenser, läsningar och skrivningar samt throw-kanter.

Exempel på prompter för agenter

  • “Vilka typer uppfyller PaymentProvider, och var skapas var och en?” (dependency_search)
  • “Vem anropar CartStore.add, och från vilka vyer?” (find_symbol, sedan dependency_search incoming)
  • “Förklara hur en pushnotis når inkorgsskärmen.” (get_task_context)

Kända begränsningar

  • Endast .swift-källkod är kopplad. Storyboard- och XIB-filer finns inte i listan över filändelser, så kopplingar i Interface Builder ligger utanför grafen.
  • Anrop i standardbiblioteket och Foundation som print, debugPrint, NSLog och assertions filtreras bort ur relationerna och är därför inte kanter i grafen. Använd text_pattern_search för dem.

Nästa steg

Anslut ett repo med snabbstarten och kontrollera sedan stödmatrisen på kompatibilitetssidan. Om du levererar samma produkt på Android, läs guiden för Kotlin.

Bäst lämpad för

  • > iOS- och macOS-team med stora app-targets och delade Swift-paket.
  • > Kodbaser byggda kring protokoll och extensions, där en typs beteende är utspritt över många filer.
  • > Agentarbetsflöden som behöver konsekvensanalys innan en delad modell, tjänst eller ett protokoll ändras.

Agentarbetsflöden

  • > Hitta alla typer som uppfyller ett protokoll innan ett av dess krav ändras.
  • > Spåra anropare av en tjänstemetod över ViewModels, coordinators och paket.
  • > Hitta initierare, beräknade egenskaper och `didSet`-observatörer som rör ett visst tillstånd.

Motordetaljer

  • > Anropbara symboler omfattar funktioner, `init`, `deinit`, subscripts, getters och setters för beräknade egenskaper samt `willSet` / `didSet`-observatörer.
  • > Medlemmar i structs, enums, protokoll och extensions kvalificeras med sin ägartyp, till exempel `CartStore.add`.
  • > Generiska parametrar, listor över protokolluppfyllelse och suffixen `?` / `!` tas bort ur definitionsnamn, och anrop behåller `self.` och klasskvalificering.

Användbara MCP-ingångar

  • find_symbol

    Använd det för ett typ-, protokoll- eller metodnamn när du behöver definitionen och referenserna.

  • dependency_search

    Använd det på ett protokoll för att hitta typer som uppfyller det, eller incoming på en metod för att hitta anropare.

  • get_task_context

    Använd det för prompter som "förklara hur en pushnotis når inkorgsskärmen".