Saltar al contenido principal

Análisis de Arquitectura

Aprende a usar ArchiCore para entender y mejorar la arquitectura de tu código.

Descripción General

ArchiCore analiza la estructura de tu código para identificar:

  • Dependencias de módulos
  • Dependencias circulares
  • Violaciones de capas
  • Puntos críticos de complejidad
  • Patrones de arquitectura

Visualización

Grafo de Dependencias

El panel principal muestra un grafo de dependencias interactivo:

  • Nodos representan archivos o módulos
  • Aristas representan imports/dependencias
  • Colores indican tipos de módulos o estado de salud
  • Tamaño refleja la complejidad del archivo
  • Zoom con la rueda del ratón
  • Desplazar arrastrando
  • Clic en nodos para ver detalles
  • Doble clic para enfocar en un módulo

Reglas de Arquitectura

Define reglas para imponer límites arquitectónicos.

Creación de Reglas

// .archicore/rules.json
{
"rules": [
{
"id": "layer-separation",
"name": "Separación de Capas",
"type": "import",
"severity": "error",
"config": {
"forbidden": [
{
"from": "controllers/*",
"to": "repositories/*",
"message": "Los controladores no deben acceder a repositorios directamente"
}
]
}
}
]
}

Reglas Integradas

ReglaDescripción
no-circular-depsPreviene dependencias circulares
max-complexityLimita la complejidad ciclomática
max-file-lengthLimita el tamaño del archivo
naming-conventionImpone estándares de nomenclatura

Validación de Reglas

> /rules validate
Validando reglas de arquitectura...

✓ no-circular-deps: APROBADO
✗ layer-separation: FALLIDO (2 violaciones)
- src/controllers/user.ts:5 importa src/repositories/user.ts
- src/controllers/product.ts:3 importa src/repositories/product.ts

Contextos Delimitados

Define límites lógicos en tu aplicación:

// .archicore/architecture.json
{
"boundedContexts": [
{
"name": "Autenticación",
"description": "Autenticación de usuarios y sesiones",
"paths": ["src/auth/*", "src/middleware/auth*"]
},
{
"name": "Productos",
"description": "Gestión del catálogo de productos",
"paths": ["src/products/*", "src/inventory/*"]
}
]
}

Métricas

Métricas de Complejidad

  • Complejidad Ciclomática - Número de caminos independientes
  • Complejidad Cognitiva - Qué tan difícil es entender el código
  • Índice de Mantenibilidad - Puntuación general de mantenibilidad

Identificación de Puntos Críticos

> /metrics --sort complexity
Puntos Críticos de Complejidad de Código:

1. src/services/order.ts:processOrder()
Complejidad: 25 | Líneas: 180 | Mantenibilidad: 45

2. src/utils/parser.ts:parseInput()
Complejidad: 18 | Líneas: 120 | Mantenibilidad: 52

3. src/api/handlers.ts:handleRequest()
Complejidad: 15 | Líneas: 95 | Mantenibilidad: 58

Sugerencias de Refactorización

ArchiCore puede sugerir oportunidades de refactorización:

> /refactoring src/services/order.ts
Sugerencias de Refactorización para src/services/order.ts:

1. Extraer Método
processOrder() es muy complejo (25)
Sugerencia: Extraer lógica de validación a validateOrder()

2. Dividir Archivo
El archivo tiene 180 líneas con múltiples responsabilidades
Sugerencia: Dividir en OrderProcessor y OrderValidator

3. Reducir Dependencias
El archivo importa 12 módulos
Sugerencia: Considerar patrón facade para reducir acoplamiento

Mejores Prácticas

  1. Ejecutar análisis regularmente - Detectar problemas temprano
  2. Definir reglas de arquitectura - Prevenir violaciones
  3. Revisar complejidad - Refactorizar puntos críticos
  4. Monitorear tendencias - Seguir métricas en el tiempo