Przejdź do treści
cd /languages
  • Platformy Apple
  • Programowanie
  • Obsługa AST i symboli

Swift w Maguyva: grafy kodu dla iOS i macOS

Maguyva obsługuje Swifta przez AST, symbole i graf, dzięki czemu agenci AI śledzą protokoły, rozszerzenia, inicjalizatory i obserwatory w kodzie iOS i macOS.

Dlaczego Swift potrzebuje czegoś więcej niż wyszukiwania w plikach

Swift rozprasza jeden typ po wielu miejscach. Struktura jest deklarowana w jednym pliku, dostaje zachowanie z rozszerzeń w trzech innych i jest zgodna z protokołami zdefiniowanymi w pakiecie. Zmiany stanu kryją się we właściwościach obliczanych i obserwatorach willSet / didSet. Agent czytający jeden plik naraz przeoczy większość z tego.

Maguyva indeksuje tę strukturę, więc agent widzi razem składowe typu, jego zgodności i wywołujących.

Co Maguyva wyodrębnia w Swifcie

Maguyva obejmuje .swift. Symbole wywoływalne obejmują funkcje, init i deinit, subskrypty, gettery i settery właściwości obliczanych oraz obserwatory willSet / didSet, więc kod zmieniający stan można wyszukać jako symbol, zamiast szukać go w ciałach właściwości.

Składowe zadeklarowane w strukturach, wyliczeniach, protokołach i rozszerzeniach są kwalifikowane typem właściciela (na przykład CartStore.add), a składowe dodane w rozszerzeniu są przypisywane do rozszerzanego typu. Z nazw definicji usuwane są parametry generyczne, listy zgodności z protokołami oraz sufiksy ? / !, więc wyszukiwanie używa samej nazwy. Wywołania zachowują self. i kwalifikację klasą, a domknięcia końcowe liczą się do arności wywołania.

Graf zapisuje wywołania, zgodność z protokołami, dziedziczenie, nadpisania, tworzenie instancji, atrybuty, odwołania do typów, odczyty i zapisy oraz krawędzie throw.

Przykładowe prompty dla agentów

  • „Które typy są zgodne z PaymentProvider i gdzie każdy z nich jest tworzony?” (dependency_search)
  • „Kto wywołuje CartStore.add i z których widoków?” (find_symbol, potem dependency_search incoming)
  • „Wyjaśnij, jak powiadomienie push trafia na ekran skrzynki odbiorczej.” (get_task_context)

Znane ograniczenia

  • Przypisany jest tylko kod źródłowy .swift. Pliki Storyboard i XIB nie znajdują się na liście rozszerzeń, więc połączenia z Interface Buildera pozostają poza grafem.
  • Wywołania biblioteki standardowej i Foundation, takie jak print, debugPrint, NSLog i asercje, są filtrowane z relacji, więc nie są krawędziami grafu. Do ich wyszukiwania użyj text_pattern_search.

Kolejne kroki

Podłącz repozytorium za pomocą szybkiego startu, a potem sprawdź macierz obsługi na stronie zgodności. Jeśli ten sam produkt wydajesz na Androida, przeczytaj przewodnik po Kotlinie.

Najlepsze dopasowanie

  • > Zespoły iOS i macOS z dużymi targetami aplikacji i współdzielonymi pakietami Swifta.
  • > Bazy kodu zbudowane wokół protokołów i rozszerzeń, w których zachowanie jednego typu jest rozproszone po wielu plikach.
  • > Przepływy pracy agentów wymagające analizy wpływu przed zmianą współdzielonego modelu, usługi lub protokołu.

Workflow agentów

  • > Znaleźć wszystkie typy zgodne z protokołem przed zmianą jednego z jego wymagań.
  • > Prześledzić wywołujących metodę usługi w ViewModelach, koordynatorach i pakietach.
  • > Zlokalizować inicjalizatory, właściwości obliczane i obserwatory `didSet`, które dotykają danego stanu.

Szczegóły silnika

  • > Symbole wywoływalne obejmują funkcje, `init`, `deinit`, subskrypty, gettery i settery właściwości obliczanych oraz obserwatory `willSet` / `didSet`.
  • > Składowe struktur, wyliczeń, protokołów i rozszerzeń są kwalifikowane typem właściciela, na przykład `CartStore.add`.
  • > Parametry generyczne, listy zgodności z protokołami i sufiksy `?` / `!` są usuwane z nazw definicji, a wywołania zachowują `self.` i kwalifikację klasą.

Przydatne punkty wejścia MCP

  • find_symbol

    Używaj go z nazwą typu, protokołu lub metody, gdy potrzebujesz definicji i odwołań.

  • dependency_search

    Użyj go na protokole, aby znaleźć zgodne typy, albo w kierunku incoming na metodzie, aby znaleźć wywołujących.

  • get_task_context

    Używaj go do promptów typu „wyjaśnij, jak powiadomienie push trafia na ekran skrzynki odbiorczej”.