Lumaktaw papunta sa content
cd /languages
  • Mga platform ng Apple
  • Programming
  • Support para sa AST at mga simbolo

Swift sa Maguyva: mga code graph para sa iOS at macOS

Sinusuportahan ng Maguyva ang Swift gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga protocol, extension, initializer at observer sa iOS at macOS code.

Ikinakalat ng Swift ang isang type sa maraming lugar. Dineklara ang isang struct sa isang file, nakakakuha ito ng behavior mula sa mga extension sa tatlong ibang file, at nagco-conform ito sa mga protocol na naka-define sa isang package. Nakatago ang mga pagbabago sa state sa mga computed property at sa mga willSet / didSet observer. Karamihan nito ay nami-miss ng agent na isang file lang ang binabasa sa bawat pagkakataon.

Ini-index ng Maguyva ang structure na ito, para sabay na makita ng agent ang mga member, conformance at tumatawag sa isang type.

Ano ang kinukuha ng Maguyva mula sa Swift

Sakop ng Maguyva ang .swift. Kasama sa mga callable symbol ang mga function, init at deinit, mga subscript, mga computed-property getter at setter, at mga willSet / didSet observer, para mahanap bilang symbol ang code na nagbabago ng state sa halip na mawala sa loob ng mga property body.

Kina-qualify sa owning type ang mga member na dineklara sa mga struct, enum, protocol at extension (halimbawa CartStore.add), at ina-attribute sa na-extend na type ang mga member na idinagdag sa isang extension. Tinatanggal sa mga definition name ang mga generic parameter, protocol-conformance list at mga ? / ! suffix, kaya payak na pangalan ang gamit ng search. Pinapanatili ng mga call ang self. at ang class qualifier, at binibilang sa arity ng call ang mga trailing closure.

Itinatala ng graph ang mga call, protocol conformance, inheritance, override, instantiation, mga attribute, type reference, read at write, at mga throw edge.

Mga halimbawang agent prompt

  • “Aling mga type ang nagco-conform sa PaymentProvider, at saan ginagawa ang bawat isa?” (dependency_search)
  • “Sino ang tumatawag sa CartStore.add, at mula sa aling mga view?” (find_symbol, tapos dependency_search na incoming)
  • “Ipaliwanag kung paano umaabot ang isang push notification sa inbox screen.” (get_task_context)

Mga kilalang limitasyon

  • .swift source lang ang naka-map. Wala sa extension list ang mga Storyboard at XIB file, kaya nasa labas ng graph ang mga Interface Builder connection.
  • Nifi-filter mula sa mga relationship ang mga standard-library at Foundation call tulad ng print, debugPrint, NSLog at mga assertion, kaya hindi sila graph edge. Gamitin ang text_pattern_search para sa mga iyon.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Kung inilalabas mo rin ang parehong produkto sa Android, basahin ang gabay sa Kotlin.

Pinakabagay

  • > Mga iOS at macOS team na may malalaking app target at mga shared Swift package.
  • > Mga codebase na nakabuo sa paligid ng mga protocol at extension, kung saan kalat sa maraming file ang behavior ng isang type.
  • > Mga agent workflow na nangangailangan ng impact analysis bago magbago ang isang shared model, service o protocol.

Mga workflow ng agent

  • > Hanapin ang bawat type na nagco-conform sa isang protocol bago magbago ang isa sa mga requirement nito.
  • > I-trace ang mga tumatawag sa isang service method sa mga ViewModel, coordinator at package.
  • > Hanapin ang mga initializer, computed property at `didSet` observer na humahawak sa isang state.

Mga detalye ng engine

  • > Kasama sa mga callable symbol ang mga function, `init`, `deinit`, mga subscript, mga computed-property getter at setter, at mga `willSet` / `didSet` observer.
  • > Kina-qualify sa owning type ang mga member ng struct, enum, protocol at extension, tulad ng `CartStore.add`.
  • > Tinatanggal sa mga definition name ang mga generic parameter, protocol-conformance list at mga `?` / `!` suffix, at pinapanatili ng mga call ang `self.` at ang class qualifier.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin kasama ang pangalan ng type, protocol o method kapag kailangan mo ang definition at mga reference.

  • dependency_search

    Gamitin sa isang protocol para mahanap ang mga nagco-conform na type, o incoming sa isang method para mahanap ang mga tumatawag.

  • get_task_context

    Gamitin para sa mga prompt tulad ng “ipaliwanag kung paano umaabot ang isang push notification sa inbox screen”.