Bakit kailangan ng Swift ng higit pa sa file search
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.