Hopp til innhold
cd /languages
  • Apples plattformer
  • Programmering
  • AST- og symbolstøtte

Swift i Maguyva: kodegrafer for iOS og macOS

Maguyva støtter Swift med AST, symboler og graf, slik at AI-agenter kan følge protokoller, extensions, initialisatorer og observatører i iOS- og macOS-kode.

Hvorfor Swift trenger mer enn filsøk

Swift sprer én type over mange steder. En struct deklareres i én fil, får atferd fra extensions i tre andre og oppfyller protokoller som er definert i en pakke. Tilstandsendringer gjemmer seg i beregnede egenskaper og willSet / didSet-observatører. En agent som leser én fil om gangen, går glipp av det meste.

Maguyva indekserer strukturen, slik at en agent kan se medlemmene, protokolloppfyllelsene og kallerne til en type samlet.

Hva Maguyva henter ut i Swift

Maguyva dekker .swift. Kallbare symboler omfatter funksjoner, init og deinit, subscripts, gettere og settere for beregnede egenskaper samt willSet / didSet-observatører, slik at kode som endrer tilstand kan søkes som symboler i stedet for å bli begravd i egenskapskropper.

Medlemmer som deklareres i structs, enums, protokoller og extensions, kvalifiseres med eiertypen sin (for eksempel CartStore.add), og medlemmer som legges til i en extension, tilskrives den utvidede typen. Generiske parametere, lister over protokolloppfyllelse og suffiksene ? / ! fjernes fra definisjonsnavnene, så oppslag bruker det rene navnet. Kall beholder self. og klassekvalifisering, og trailing closures teller med i kallets aritet.

Grafen registrerer kall, protokolloppfyllelse, arv, overstyringer, instansiering, attributter, typereferanser, lesinger og skrivinger samt throw-kanter.

Eksempler på prompter for agenter

  • «Hvilke typer oppfyller PaymentProvider, og hvor opprettes hver av dem?» (dependency_search)
  • «Hvem kaller CartStore.add, og fra hvilke visninger?» (find_symbol, deretter dependency_search incoming)
  • «Forklar hvordan et pushvarsel når frem til innboksskjermen.» (get_task_context)

Kjente begrensninger

  • Bare .swift-kildekode er knyttet til Swift. Storyboard- og XIB-filer står ikke på listen over filendelser, så koblinger i Interface Builder ligger utenfor grafen.
  • Kall i standardbiblioteket og Foundation som print, debugPrint, NSLog og assertions filtreres ut av relasjonene og er derfor ikke kanter i grafen. Bruk text_pattern_search for dem.

Neste steg

Koble til et repositorium med hurtigstarten, og se deretter støttematrisen på kompatibilitetssiden. Hvis du leverer samme produkt på Android, bør du lese veiledningen for Kotlin.

Best egnet

  • > iOS- og macOS-team med store app-targets og delte Swift-pakker.
  • > Kodebaser bygd rundt protokoller og extensions, der atferden til én type er spredt over mange filer.
  • > Agentarbeidsflyter som trenger konsekvensanalyse før en delt modell, tjeneste eller protokoll endres.

Agent-arbeidsflyter

  • > Finne alle typer som oppfyller en protokoll før ett av kravene endres.
  • > Spore hvem som kaller en tjenestemetode på tvers av ViewModels, coordinators og pakker.
  • > Finne initialisatorer, beregnede egenskaper og `didSet`-observatører som berører en gitt tilstand.

Motordetaljer

  • > Kallbare symboler omfatter funksjoner, `init`, `deinit`, subscripts, gettere og settere for beregnede egenskaper samt `willSet` / `didSet`-observatører.
  • > Medlemmer av structs, enums, protokoller og extensions kvalifiseres med eiertypen sin, for eksempel `CartStore.add`.
  • > Generiske parametere, lister over protokolloppfyllelse og suffiksene `?` / `!` fjernes fra definisjonsnavn, og kall beholder `self.` og klassekvalifisering.

Nyttige MCP-inngangspunkter

  • find_symbol

    Bruk det for et type-, protokoll- eller metodenavn når du trenger definisjonen og referansene.

  • dependency_search

    Bruk det på en protokoll for å finne typer som oppfyller den, eller incoming på en metode for å finne kallere.

  • get_task_context

    Bruk det til prompter som «forklar hvordan et pushvarsel når frem til innboksskjermen».