Resumen de detectores
archlint incluye más de 28 detectores integrados categorizados por el tipo de problema arquitectónico o de calidad de código que identifican.
TIP
Falsos positivos: El análisis arquitectónico a veces puede producir falsos positivos, especialmente en proyectos con carga dinámica pesada, reflexión o contenedores complejos de Inyección de Dependencias (DI).
Problemas de dependencia
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Dependencias cíclicas | cyclic_dependency | Dependencias circulares entre archivos | ✅ |
| Clústeres de ciclos | cycle_clusters | Red compleja de dependencias circulares | ✅ |
| Ciclos de tipos | circular_type_deps | Dependencias circulares solo de tipos | ❌ |
| Ciclos de paquetes | package_cycles | Dependencias cíclicas entre paquetes | ❌ |
| Violación de capas | layer_violation | Violaciones de las capas arquitectónicas definidas | ❌ |
| Violación de SDP | sdp_violation | Violaciones del Principio de Dependencias Estables | ❌ |
Diseño de módulos y clases
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Módulo dios | god_module | Módulos con demasiadas responsabilidades | ✅ |
| Módulo hub | hub_module | Módulos "hub" altamente conectados | ❌ |
| Baja cohesión | lcom | Clases con baja cohesión interna (LCOM4) | ❌ |
| Alto acoplamiento | high_coupling | Módulos con demasiadas dependencias | ❌ |
| Módulo disperso | module_cohesion | Funcionalidad dispersa en demasiados archivos | ❌ |
| Envidia de funcionalidad | feature_envy | Métodos que usan más otra clase que la suya propia | ❌ |
Calidad del código y organización
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Código muerto | dead_code | Exportaciones no utilizadas | ✅ |
| Símbolos muertos | dead_symbols | Funciones y variables locales no utilizadas | ✅ |
| Tipos huérfanos | orphan_types | Tipos no conectados a la base de código | ✅ |
| Abuso de barrel | barrel_file | Archivos barrel grandes que causan acoplamiento | ✅ |
| Obsesión por primitivos | primitive_obsession | Uso excesivo de primitivos en lugar de tipos de dominio | ❌ |
Complejidad y tamaño
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Complejidad ciclomática | cyclomatic_complexity | Funciones con alta complejidad ciclomática | ✅ |
| Complejidad cognitiva | cognitive_complexity | Funciones con alta complejidad cognitiva | ✅ |
| Anidamiento profundo | deep_nesting | Bloques de código profundamente anidados | ✅ |
| Muchos parámetros | long_params | Funciones con demasiados parámetros | ✅ |
| Archivo grande | large_file | Archivos fuente que son demasiado grandes | ✅ |
Patrones de cambio
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Cirugía de escopeta | shotgun_surgery | Cambios que requieren modificación en muchos archivos | ❌ |
| Interfaz Inestable | unstable_interface | Interfaces públicas que cambian frecuentemente | ❌ |
Ejecución y seguridad
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Fuga de pruebas | test_leakage | El código de prueba se filtra a producción | ❌ |
| Acoplamiento con proveedor | vendor_coupling | Acoplamiento estrecho con librerías externas | ❌ |
| Dependencia hub | hub_dependency | Dependencia excesiva de paquetes externos | ❌ |
| Importación con efecto secundario | side_effect_import | Importaciones que activan efectos secundarios | ✅ |
| Estado mutable compartido | shared_mutable_state | Variables mutables exportadas | ❌ |
Métricas arquitectónicas
| Detector | ID | Descripción | Por defecto |
|---|---|---|---|
| Violación de abstractez | abstractness | Zonas de Dolor/Inutilidad (métrica I+A) | ❌ |
| Configuración dispersa | scattered_config | Configuración dispersa en muchos archivos | ❌ |
| Clon de código | code_clone | Código duplicado en el proyecto | ✅ |