Miranda Impact Analyzer
Extensión de VS Code que analiza automáticamente el impacto de cambios en el código para mejorar el workflow de contribuciones en Miranda.
Características
| Característica |
Descripción |
| Grafo de dependencias |
Indexa todo el workspace al activarse y mantiene un grafo bidireccional de imports y llamadas entre funciones |
| Análisis de impacto en tiempo real |
Al guardar un archivo, detecta qué funciones cambiaron y calcula cuántos archivos se ven afectados transitivamente |
| Niveles de riesgo |
Clasifica cada cambio en LOW / MEDIUM / HIGH / CRITICAL según métricas: consumidores directos, impacto transitivo, cambio de firma, API pública, etc. |
| Diagnostics integrados |
Muestra warnings/errors directamente en el editor sobre la línea de la función modificada y los imports afectados |
| Hover info |
Al pasar el mouse sobre el nombre de una función, muestra su nivel de riesgo, cantidad de callers y si es API pública |
| Code Actions |
Quick-fixes contextuales: anotar como testeada, suprimir warning, abrir panel |
| Panel de impacto |
Webview lateral con tarjetas por función, árbol de archivos afectados con profundidad, sugerencias y estadísticas del grafo |
Arquitectura
src/
├── extension.ts # Entry point: activación, scan inicial, event handlers
├── analyzer/
│ ├── astParser.ts # Parser regex-based de funciones, imports y call expressions
│ ├── dependencyGraph.ts # Grafo bidireccional (files + functions), BFS transitivo
│ └── impactAnalyzer.ts # Scoring de riesgo, diff de funciones, reporte de impacto
├── providers/
│ ├── diagnosticsProvider.ts # Traduce ImpactReport → vscode.Diagnostic
│ ├── hoverProvider.ts # Hover con info de riesgo por función
│ └── codeActionsProvider.ts # Quick-fixes contextuales (CodeAction)
└── ui/
└── impactPanel.ts # Webview panel con HTML/CSS generado dinámicamente
Cómo funciona
Al activar la extensión: escanea todos los archivos .ts/.tsx/.js/.jsx del workspace, los parsea con el AST parser y construye el grafo de dependencias.
Al guardar un archivo:
- Compara la versión anterior con la nueva (diff de firmas de funciones)
- Ejecuta BFS en el grafo para encontrar todos los archivos afectados
- Calcula un score de riesgo para cada función modificada
- Publica diagnósticos en los archivos afectados
- Actualiza el panel lateral si está abierto
Scoring de riesgo:
- +1-4 pts: cantidad de archivos que llaman directamente a la función
- +1-3 pts: cantidad de archivos afectados transitivamente
- +3 pts: la firma de la función cambió (posible breaking change)
- +2 pts: función exportada (API pública)
- +1 pt: función async (riesgo de timing bugs)
- +1 pt: tiene anotación de tipo de retorno (callers pueden depender del shape)
Comandos
| Comando |
Descripción |
Miranda: Show Impact Analysis Panel |
Abre el panel lateral de análisis |
Miranda: Analyze Full Workspace |
Re-indexa todos los archivos del workspace |
Miranda: Clear Impact Diagnostics |
Limpia todos los diagnósticos del editor |
Configuración
{
// Activar/desactivar la extensión
"mirandaImpact.enabled": true,
// Nivel mínimo de riesgo para mostrar diagnósticos
"mirandaImpact.riskThreshold": "low", // "low" | "medium" | "high"
// Mostrar info de impacto en hover
"mirandaImpact.showHoverInfo": true,
// Patrones de archivos excluidos del análisis
"mirandaImpact.excludedPatterns": [
"**/node_modules/**",
"**/dist/**",
"**/out/**",
"**/*.d.ts"
]
}
Desarrollo
npm install
npm run compile # compilar una vez
npm run watch # modo watch
npm run lint # verificar lints
Para probar la extensión: F5 en VS Code abre una ventana de desarrollo con la extensión cargada.