Naar inhoud springen
cd /languages
  • Apple-platforms
  • Programmeren
  • AST- en symboolondersteuning

Swift in Maguyva: codegrafen voor iOS en macOS

Maguyva ondersteunt Swift met AST, symbolen en graaf, zodat AI-agents protocollen, extensions, initializers en observers volgen in iOS- en macOS-code.

Waarom Swift meer nodig heeft dan bestandszoeken

Swift verspreidt één type over veel plekken. Een struct wordt in het ene bestand gedeclareerd, krijgt gedrag uit extensions in drie andere en voldoet aan protocollen die in een pakket zijn gedefinieerd. Statewijzigingen zitten verstopt in computed properties en willSet / didSet-observers. Een agent die één bestand tegelijk leest, mist het meeste daarvan.

Maguyva indexeert die structuur, zodat een agent de members, protocolconformiteit en aanroepers van een type samen ziet.

Wat Maguyva in Swift extraheert

Maguyva dekt .swift. Aanroepbare symbolen omvatten functies, init en deinit, subscripts, getters en setters van computed properties, en willSet / didSet-observers, zodat code die state wijzigt als symbool doorzoekbaar is in plaats van te verdwijnen in property-bodies.

Members die in structs, enums, protocollen en extensions zijn gedeclareerd, worden gekwalificeerd met hun eigenaartype (bijvoorbeeld CartStore.add), en members die in een extension worden toegevoegd, worden aan het uitgebreide type toegeschreven. Uit definitienamen worden generieke parameters, protocolconformiteitslijsten en de suffixen ? / ! verwijderd, zodat zoekopdrachten de kale naam gebruiken. Aanroepen behouden self. en klassekwalificatie, en trailing closures tellen mee in de ariteit van de aanroep.

De graaf legt aanroepen vast, protocolconformiteit, overerving, overrides, instantiëring, attributen, typeverwijzingen, lees- en schrijfacties, en throw-randen.

Voorbeeldprompts voor agents

  • “Welke types voldoen aan PaymentProvider, en waar wordt elk daarvan aangemaakt?” (dependency_search)
  • “Wie roept CartStore.add aan, en vanuit welke views?” (find_symbol, daarna dependency_search incoming)
  • “Leg uit hoe een pushmelding het inboxscherm bereikt.” (get_task_context)

Bekende beperkingen

  • Alleen .swift-broncode is gekoppeld. Storyboard- en XIB-bestanden staan niet in de extensielijst, dus Interface Builder-verbindingen vallen buiten de graaf.
  • Aanroepen uit de standaardbibliotheek en Foundation zoals print, debugPrint, NSLog en assertions worden uit de relaties gefilterd en zijn dus geen randen in de graaf. Gebruik daarvoor text_pattern_search.

Volgende stappen

Koppel een repository via de snelstart en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Breng je hetzelfde product ook op Android uit, lees dan de Kotlin-gids.

Beste toepassing

  • > iOS- en macOS-teams met grote app-targets en gedeelde Swift-pakketten.
  • > Codebases rond protocollen en extensions, waarin het gedrag van één type over veel bestanden is verspreid.
  • > Agentworkflows die een impactanalyse nodig hebben voordat een gedeeld model, een service of een protocol verandert.

Agentworkflows

  • > Elk type vinden dat aan een protocol voldoet voordat een van de vereisten verandert.
  • > De aanroepers van een servicemethode volgen over ViewModels, coordinators en pakketten heen.
  • > Initializers, computed properties en `didSet`-observers vinden die een bepaalde state raken.

Enginedetails

  • > Aanroepbare symbolen omvatten functies, `init`, `deinit`, subscripts, getters en setters van computed properties, en `willSet` / `didSet`-observers.
  • > Members van structs, enums, protocollen en extensions worden gekwalificeerd met hun eigenaartype, zoals `CartStore.add`.
  • > Generieke parameters, protocolconformiteitslijsten en de suffixen `?` / `!` worden uit definitienamen verwijderd, en aanroepen behouden `self.` en klassekwalificatie.

Nuttige MCP-instappunten

  • find_symbol

    Gebruik het voor een type-, protocol- of methodenaam wanneer je de definitie en verwijzingen nodig hebt.

  • dependency_search

    Gebruik het op een protocol om conforme types te vinden, of incoming op een methode om aanroepers te vinden.

  • get_task_context

    Gebruik het voor prompts zoals "leg uit hoe een pushmelding het inboxscherm bereikt".