# Swift no Maguyva: grafos de código para iOS e macOS

Canonical source: https://maguyva.ai/pt-br/languages/swift

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

O Maguyva oferece suporte a Swift com AST, símbolos e grafo, para que agentes de IA sigam protocolos, extensions, inicializadores e observers em código iOS e macOS.

## Panorama de suporte

- Nível: Suporte a AST e símbolos
- Programação
- Extensões: .swift
- Parsing real de AST para busca com consciência de sintaxe e contexto estrutural.
- Símbolos nomeados alimentam a busca semântica e as referências cruzadas. A navegação por grafo fica disponível quando a extração de relações está habilitada.
- Esta linguagem fornece símbolos e relações para a busca orientada por grafo; os tipos de aresta compatíveis variam de acordo com seus construtos nativos.
- A análise de AST e a extração de símbolos estão disponíveis.

## Uso ideal

- Equipes iOS e macOS com grandes targets de app e pacotes Swift compartilhados.
- Bases de código construídas em torno de protocolos e extensions, em que o comportamento de um tipo fica espalhado por muitos arquivos.
- Fluxos de trabalho com agentes que precisam de análise de impacto antes de mudar um modelo, serviço ou protocolo compartilhado.

## Fluxos de trabalho de agente

- Encontrar todos os tipos que se conformam a um protocolo antes de mudar um de seus requisitos.
- Rastrear os chamadores de um método de serviço entre ViewModels, coordinators e pacotes.
- Localizar inicializadores, propriedades computadas e observers `didSet` que mexem em um estado.

## Por que Swift precisa de mais que busca em arquivos

Swift espalha um mesmo tipo por muitos lugares. Uma struct é declarada em um arquivo, ganha comportamento de extensions em outros três e se conforma a protocolos definidos em um pacote. Mudanças de estado se escondem em propriedades computadas e observers `willSet` / `didSet`. Um agente que lê um arquivo por vez perde a maior parte disso.

O Maguyva indexa essa estrutura, para que um agente veja juntos os membros, as conformidades e os chamadores de um tipo.

## O que o Maguyva extrai em Swift

O Maguyva cobre `.swift`. Os símbolos chamáveis incluem funções, `init` e `deinit`, subscripts, getters e setters de propriedades computadas e observers `willSet` / `didSet`, então o código que muda estado pode ser buscado como símbolo em vez de ficar enterrado no corpo das propriedades.

Membros declarados em structs, enums, protocolos e extensions são qualificados pelo tipo dono (por exemplo `CartStore.add`), e membros adicionados em uma extension são atribuídos ao tipo estendido. Os nomes de definição têm parâmetros genéricos, listas de conformidade a protocolos e sufixos `?` / `!` removidos, então as buscas usam o nome simples. As chamadas preservam `self.` e a qualificação de classe, e trailing closures contam na aridade da chamada.

O grafo registra chamadas, conformidade a protocolos, herança, sobrescritas, instanciação, atributos, referências de tipo, leituras e escritas, e arestas de `throw`.

## Exemplos de prompts para agentes

- "Quais tipos se conformam a `PaymentProvider` e onde cada um é criado?" (`dependency_search`)
- "Quem chama `CartStore.add` e a partir de quais views?" (`find_symbol`, depois `dependency_search` incoming)
- "Explique como uma notificação push chega à tela da caixa de entrada." (`get_task_context`)

## Limitações conhecidas

- Apenas o código-fonte `.swift` é mapeado. Arquivos Storyboard e XIB não estão na lista de extensões, então as conexões do Interface Builder ficam fora do grafo.
- Chamadas da biblioteca padrão e do Foundation como `print`, `debugPrint`, `NSLog` e asserções são filtradas das relações, então não são arestas do grafo. Use `text_pattern_search` para encontrá-las.

## Próximos passos

Conecte um repositório pelo [início rápido](/pt-br/docs/quickstart) e depois confira a matriz de suporte na [página de compatibilidade](/pt-br/docs/compatibility). Se você lança o mesmo produto no Android, leia o [guia de Kotlin](/pt-br/languages/kotlin).

## Detalhes do motor

- Os símbolos chamáveis incluem funções, `init`, `deinit`, subscripts, getters e setters de propriedades computadas e observers `willSet` / `didSet`.
- Membros de structs, enums, protocolos e extensions são qualificados pelo tipo dono, como `CartStore.add`.
- Parâmetros genéricos, listas de conformidade a protocolos e sufixos `?` / `!` são removidos dos nomes de definição, e as chamadas preservam `self.` e a qualificação de classe.

## Pontos de entrada MCP úteis

- `find_symbol`: Use com o nome de um tipo, protocolo ou método quando precisar da definição e das referências.
- `dependency_search`: Use em um protocolo para encontrar os tipos que se conformam a ele, ou em incoming em um método para encontrar os chamadores.
- `get_task_context`: Use para prompts como "explique como uma notificação push chega à tela da caixa de entrada".
