Configuración
archlint se puede configurar usando un archivo .archlint.yaml en la raíz de su proyecto. Si no se encuentra ningún archivo de configuración, la herramienta utiliza valores predeterminados razonables para todos los detectores.
Estructura del Archivo de Configuración
# Archivos y directorios a ignorar (global)
ignore:
- '**/dist/**'
- '**/node_modules/**'
# Alias de rutas (similar a tsconfig.json o webpack)
# Por defecto, archlint carga automáticamente los alias desde tsconfig.json.
# Los alias definidos explícitamente aquí tienen prioridad sobre los de tsconfig.json.
aliases:
'@/*': 'src/*'
# Configuración de integración con TypeScript (true, false o ruta al archivo)
tsconfig: true
# Extender desde presets integrados o personalizados
extends:
- nestjs
- ./my-company-preset.yaml
# Puntos de entrada para el análisis (utilizados para detección de código muerto)
entry_points:
- 'src/main.ts'
# Configuración de reglas para cada detector
rules:
# Forma corta: nivel de severidad o "off"
cycles: high
dead_code: medium
# Forma completa: con opciones adicionales
god_module:
severity: high
enabled: true
exclude: ['**/generated/**']
# Opciones específicas del detector
fan_in: 15
fan_out: 15
churn: 20
vendor_coupling:
severity: medium
ignore_packages: ['lodash', 'rxjs']
# Sobrescritura de reglas para rutas específicas
overrides:
- files: ['**/legacy/**']
rules:
complexity: medium
god_module: off
# Configuración de puntuación y calificación
scoring:
# Nivel mínimo de severidad para informar (low, medium, high, critical)
minimum: low
# Pesos para el cálculo de la puntuación total
weights:
critical: 100
high: 50
medium: 20
low: 5
# Umbrales para la calificación (Densidad = Puntuación Total / Archivos)
grade_rules:
excellent: 1.0
good: 3.0
fair: 7.0
moderate: 15.0
poor: 30.0
# Autodetección de framework (por defecto true)
auto_detect_framework: true
# Configuración de diff arquitectónico
diff:
# Umbral de porcentaje para que el empeoramiento de una métrica se considere regresión
metric_threshold_percent: 20
# Desplazamiento máximo de línea para considerar smells como iguales durante el diff difuso
line_tolerance: 50
# Configuración de Git
git:
enabled: true # habilitar análisis (por defecto true)
history_period: '1y'Extends (Extensión)
El campo extends le permite cargar presets desde diferentes fuentes:
- Presets integrados:
nestjs,nextjs,react,oclif. - Archivos locales: Ruta relativa a un archivo YAML (por ejemplo,
./archlint-shared.yaml). - URLs: URL directa a un archivo YAML (por ejemplo,
https://example.com/preset.yaml).
Los presets se fusionan en el orden en que se listan. La configuración del usuario siempre tiene la prioridad más alta.
Reglas y Niveles de Severidad
En la sección rules, puede usar los siguientes niveles:
critical: Problema crítico que requiere atención inmediata.high: Error arquitectónico de alta severidad.medium: Advertencia o problema de severidad media.low: Mensaje informativo o de baja severidad.off: Desactiva completamente el detector.
Configuración vía CLI
Puede especificar la ruta del archivo de configuración explícitamente:
archlint scan --config custom-config.yamlIntegración con TypeScript
archlint puede sincronizarse automáticamente con su tsconfig.json. Use el campo tsconfig para controlar esto:
tsconfig: true(por defecto): Busca automáticamentetsconfig.jsonen la raíz del proyecto.tsconfig: falseotsconfig: null: Desactiva la integración con TypeScript.tsconfig: "./ruta/al/tsconfig.json": Utiliza un archivo de configuración específico.
Cuando está habilitado, la herramienta:
- Carga Alias: Extrae
compilerOptions.pathsycompilerOptions.baseUrlpara configurar automáticamentealiases. - Auto-ignorar: Agrega
compilerOptions.outDira la lista global deignore. - Exclusiones: Incorpora patrones del campo
excludeen la lista deignore.
Configuración de Diff
La sección diff controla cómo se detectan las regresiones arquitectónicas al comparar dos instantáneas:
metric_threshold_percent(por defecto:20): Define cuánto debe aumentar una métrica (como la complejidad ciclomática o el acoplamiento) antes de que se informe como un smell "empeorado". Por ejemplo, con un umbral del 20%, la complejidad de una función debe aumentar de 10 a al menos 12 para ser señalada.line_tolerance(por defecto:50): Define el número máximo de líneas que un símbolo de código puede desplazarse (debido a adiciones o eliminaciones en otras partes del archivo) antes de que archlint deje de reconocerlo como el mismo smell. Este "emparejamiento difuso" evita que el código desplazado se informe como una nueva regresión.