Por qué Swift necesita más que una búsqueda de archivos
Swift reparte un mismo tipo en muchos lugares. Un struct se declara en un archivo, obtiene comportamiento de extensiones en otros tres y se ajusta a protocolos definidos en un paquete. Los cambios de estado se esconden en propiedades calculadas y en observadores willSet / didSet. Un agente que lee un archivo a la vez se pierde la mayor parte.
Maguyva indexa esa estructura para que un agente vea juntos los miembros, las conformidades y los llamadores de un tipo.
Maguyva cubre .swift. Los símbolos invocables incluyen funciones, init y deinit, subscripts, getters y setters de propiedades calculadas, y observadores willSet / didSet, así que el código que cambia el estado se puede buscar como símbolo en lugar de quedar enterrado en el cuerpo de las propiedades.
Los miembros declarados dentro de structs, enums, protocolos y extensiones se califican con su tipo propietario (por ejemplo CartStore.add), y los miembros añadidos en una extensión se atribuyen al tipo extendido. A los nombres de definición se les quitan los parámetros genéricos, las listas de conformidad a protocolos y los sufijos ? / !, de modo que las búsquedas usan el nombre simple. Las llamadas conservan self. y la calificación de clase, y los trailing closures cuentan en la aridad de la llamada.
El grafo registra llamadas, conformidad a protocolos, herencia, sobrescrituras, instanciación, atributos, referencias de tipo, lecturas y escrituras, y aristas de throw.
Ejemplos de prompts para agentes
- “¿Qué tipos se ajustan a
PaymentProvider y dónde se crea cada uno?” (dependency_search)
- “¿Quién llama a
CartStore.add y desde qué vistas?” (find_symbol y luego dependency_search incoming)
- “Explica cómo llega una notificación push a la pantalla de la bandeja de entrada.” (
get_task_context)
Limitaciones conocidas
- Solo se asigna el código fuente
.swift. Los archivos Storyboard y XIB no están en la lista de extensiones, así que las conexiones de Interface Builder quedan fuera del grafo.
- Las llamadas de la biblioteca estándar y de Foundation como
print, debugPrint, NSLog y las aserciones se filtran de las relaciones, así que no son aristas del grafo. Usa text_pattern_search para encontrarlas.
Próximos pasos
Conecta un repositorio con el inicio rápido y luego revisa la matriz de compatibilidad en la página de compatibilidad. Si publicas el mismo producto en Android, lee la guía de Kotlin.