Spring til indhold
cd /languages
  • Apples platforme
  • Programmering
  • AST- og symbolunderstøttelse

Swift i Maguyva: kodegrafer til iOS og macOS

Maguyva understøtter Swift med AST, symboler og graf, så AI-agenter kan følge protokoller, extensions, initializers og observers i iOS- og macOS-kode.

Hvorfor Swift kræver mere end filsøgning

Swift spreder én type ud over mange steder. En struct erklæres i én fil, får adfærd fra extensions i tre andre og overholder protokoller, der er defineret i en pakke. Tilstandsændringer gemmer sig i beregnede egenskaber og willSet / didSet-observers. En agent, der læser én fil ad gangen, overser det meste.

Maguyva indekserer strukturen, så en agent kan se en types medlemmer, protokoloverholdelser og kaldere samlet.

Hvad Maguyva udtrækker i Swift

Maguyva dækker .swift. Kaldbare symboler omfatter funktioner, init og deinit, subscripts, getters og setters til beregnede egenskaber samt willSet / didSet-observers, så kode, der ændrer tilstand, kan søges som symboler i stedet for at blive begravet i egenskabskroppe.

Medlemmer, der erklæres i structs, enums, protokoller og extensions, kvalificeres med deres ejertype (for eksempel CartStore.add), og medlemmer tilføjet i en extension tilskrives den udvidede type. Generiske parametre, lister over protokoloverholdelse og suffikserne ? / ! fjernes fra definitionsnavnene, så opslag bruger det rene navn. Kald bevarer self. og klassekvalificering, og trailing closures tæller med i kaldets aritet.

Grafen registrerer kald, protokoloverholdelse, nedarvning, overskrivninger, instansiering, attributter, typereferencer, læsninger og skrivninger samt throw-kanter.

Eksempler på prompts til agenter

  • “Hvilke typer overholder PaymentProvider, og hvor oprettes hver af dem?” (dependency_search)
  • “Hvem kalder CartStore.add, og fra hvilke views?” (find_symbol, derefter dependency_search incoming)
  • “Forklar, hvordan en push-notifikation når frem til indbakkeskærmen.” (get_task_context)

Kendte begrænsninger

  • Kun .swift-kildekode er knyttet. Storyboard- og XIB-filer er ikke på listen over filendelser, så forbindelser i Interface Builder ligger uden for grafen.
  • Kald i standardbiblioteket og Foundation som print, debugPrint, NSLog og assertions filtreres fra relationerne og er derfor ikke kanter i grafen. Brug text_pattern_search til dem.

Næste skridt

Tilslut et repository med hurtigstarten, og se derefter understøttelsesmatricen på kompatibilitetssiden. Hvis du udgiver det samme produkt på Android, så læs guiden til Kotlin.

Bedst egnet til

  • > iOS- og macOS-teams med store app-targets og delte Swift-pakker.
  • > Kodebaser bygget op omkring protokoller og extensions, hvor en types adfærd er spredt over mange filer.
  • > Agentarbejdsgange, der kræver konsekvensanalyse, før en delt model, tjeneste eller protokol ændres.

Agent-arbejdsgange

  • > Finde alle typer, der overholder en protokol, før et af dens krav ændres.
  • > Spore, hvem der kalder en tjenestemetode, på tværs af ViewModels, coordinators og pakker.
  • > Finde initializers, beregnede egenskaber og `didSet`-observers, der berører en given tilstand.

Motordetaljer

  • > Kaldbare symboler omfatter funktioner, `init`, `deinit`, subscripts, getters og setters til beregnede egenskaber samt `willSet` / `didSet`-observers.
  • > Medlemmer af structs, enums, protokoller og extensions kvalificeres med deres ejertype, for eksempel `CartStore.add`.
  • > Generiske parametre, lister over protokoloverholdelse og suffikserne `?` / `!` fjernes fra definitionsnavne, og kald bevarer `self.` og klassekvalificering.

Nyttige MCP-indgange

  • find_symbol

    Brug det til et type-, protokol- eller metodenavn, når du har brug for definitionen og referencerne.

  • dependency_search

    Brug det på en protokol for at finde typer, der overholder den, eller incoming på en metode for at finde kaldere.

  • get_task_context

    Brug det til prompts som "forklar, hvordan en push-notifikation når frem til indbakkeskærmen".