# Swift dans Maguyva : des graphes de code pour iOS et macOS

Canonical source: https://maguyva.ai/fr/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).

Maguyva prend en charge Swift avec AST, symboles et graphe, pour que les agents IA suivent protocoles, extensions, initialiseurs et observateurs dans le code iOS et macOS.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .swift
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les équipes iOS et macOS avec de grandes cibles d'application et des paquets Swift partagés.
- Les bases de code construites autour de protocoles et d'extensions, où le comportement d'un type est réparti sur de nombreux fichiers.
- Les workflows d'agent qui exigent une analyse d'impact avant de modifier un modèle, un service ou un protocole partagé.

## Workflows d'agent

- Trouver tous les types conformes à un protocole avant d'en modifier une exigence.
- Retracer les appelants d'une méthode de service à travers ViewModels, coordinateurs et paquets.
- Repérer les initialiseurs, propriétés calculées et observateurs `didSet` qui touchent un état donné.

## Pourquoi Swift demande plus qu'une recherche de fichiers

Swift répartit un même type à de nombreux endroits. Une structure est déclarée dans un fichier, reçoit du comportement d'extensions situées dans trois autres et se conforme à des protocoles définis dans un paquet. Les changements d'état se cachent dans les propriétés calculées et les observateurs `willSet` / `didSet`. Un agent qui lit un fichier à la fois en manque la plus grande partie.

Maguyva indexe cette structure, pour qu'un agent voie ensemble les membres d'un type, ses conformités et ses appelants.

## Ce que Maguyva extrait en Swift

Maguyva couvre `.swift`. Les symboles appelables comprennent les fonctions, `init` et `deinit`, les subscripts, les getters et setters des propriétés calculées, et les observateurs `willSet` / `didSet` : le code qui modifie l'état se recherche donc comme un symbole au lieu de rester enfoui dans le corps des propriétés.

Les membres déclarés dans les structures, énumérations, protocoles et extensions sont qualifiés par leur type propriétaire (par exemple `CartStore.add`), et les membres ajoutés dans une extension sont rattachés au type étendu. Les paramètres génériques, les listes de conformité aux protocoles et les suffixes `?` / `!` sont retirés des noms de définition, si bien que les recherches utilisent le nom simple. Les appels conservent `self.` et la qualification par la classe, et les closures finales comptent dans l'arité de l'appel.

Le graphe enregistre les appels, la conformité aux protocoles, l'héritage, les surcharges, l'instanciation, les attributs, les références de type, les lectures et écritures, et les arêtes `throw`.

## Exemples de prompts pour agents

- « Quels types sont conformes à `PaymentProvider`, et où chacun est-il créé ? » (`dependency_search`)
- « Qui appelle `CartStore.add`, et depuis quelles vues ? » (`find_symbol`, puis `dependency_search` en incoming)
- « Explique comment une notification push arrive jusqu'à l'écran de la boîte de réception. » (`get_task_context`)

## Limites connues

- Seules les sources `.swift` sont associées. Les fichiers Storyboard et XIB ne figurent pas dans la liste des extensions ; les connexions Interface Builder restent donc hors du graphe.
- Les appels de la bibliothèque standard et de Foundation comme `print`, `debugPrint`, `NSLog` et les assertions sont filtrés des relations et ne sont donc pas des arêtes du graphe. Utilisez `text_pattern_search` pour les retrouver.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Si vous livrez le même produit sur Android, lisez le [guide Kotlin](/fr/languages/kotlin).

## Détails du moteur

- Les symboles appelables comprennent les fonctions, `init`, `deinit`, les subscripts, les getters et setters des propriétés calculées, et les observateurs `willSet` / `didSet`.
- Les membres des structures, énumérations, protocoles et extensions sont qualifiés par leur type propriétaire, par exemple `CartStore.add`.
- Les paramètres génériques, les listes de conformité et les suffixes `?` / `!` sont retirés des noms de définition, et les appels conservent `self.` et la qualification par la classe.

## Points d'entrée MCP utiles

- `find_symbol`: Utilisez-le pour un nom de type, de protocole ou de méthode quand vous avez besoin de la définition et des références.
- `dependency_search`: Utilisez-le sur un protocole pour trouver les types conformes, ou en incoming sur une méthode pour trouver ses appelants.
- `get_task_context`: Utilisez-le pour des prompts comme « explique comment une notification push arrive jusqu'à l'écran de la boîte de réception ».
