Skip to content

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 ​

DetectorIDDescripciónPor defecto
Dependencias cíclicascyclic_dependencyDependencias circulares entre archivos✅
Clústeres de cicloscycle_clustersRed compleja de dependencias circulares✅
Ciclos de tiposcircular_type_depsDependencias circulares solo de tipos❌
Ciclos de paquetespackage_cyclesDependencias cíclicas entre paquetes❌
Violación de capaslayer_violationViolaciones de las capas arquitectónicas definidas❌
Violación de SDPsdp_violationViolaciones del Principio de Dependencias Estables❌

Diseño de módulos y clases ​

DetectorIDDescripciónPor defecto
Módulo diosgod_moduleMódulos con demasiadas responsabilidades✅
Módulo hubhub_moduleMódulos "hub" altamente conectados❌
Baja cohesiónlcomClases con baja cohesión interna (LCOM4)❌
Alto acoplamientohigh_couplingMódulos con demasiadas dependencias❌
Módulo dispersomodule_cohesionFuncionalidad dispersa en demasiados archivos❌
Envidia de funcionalidadfeature_envyMétodos que usan más otra clase que la suya propia❌

Calidad del código y organización ​

DetectorIDDescripciónPor defecto
Código muertodead_codeExportaciones no utilizadas✅
Símbolos muertosdead_symbolsFunciones y variables locales no utilizadas✅
Tipos huérfanosorphan_typesTipos no conectados a la base de código✅
Abuso de barrelbarrel_fileArchivos barrel grandes que causan acoplamiento✅
Obsesión por primitivosprimitive_obsessionUso excesivo de primitivos en lugar de tipos de dominio❌

Complejidad y tamaño ​

DetectorIDDescripciónPor defecto
Complejidad ciclomáticacyclomatic_complexityFunciones con alta complejidad ciclomática✅
Complejidad cognitivacognitive_complexityFunciones con alta complejidad cognitiva✅
Anidamiento profundodeep_nestingBloques de código profundamente anidados✅
Muchos parámetroslong_paramsFunciones con demasiados parámetros✅
Archivo grandelarge_fileArchivos fuente que son demasiado grandes✅

Patrones de cambio ​

DetectorIDDescripciónPor defecto
Cirugía de escopetashotgun_surgeryCambios que requieren modificación en muchos archivos❌
Interfaz Inestableunstable_interfaceInterfaces públicas que cambian frecuentemente❌

Ejecución y seguridad ​

DetectorIDDescripciónPor defecto
Fuga de pruebastest_leakageEl código de prueba se filtra a producción❌
Acoplamiento con proveedorvendor_couplingAcoplamiento estrecho con librerías externas❌
Dependencia hubhub_dependencyDependencia excesiva de paquetes externos❌
Importación con efecto secundarioside_effect_importImportaciones que activan efectos secundarios✅
Estado mutable compartidoshared_mutable_stateVariables mutables exportadas❌

Métricas arquitectónicas ​

DetectorIDDescripciónPor defecto
Violación de abstractezabstractnessZonas de Dolor/Inutilidad (métrica I+A)❌
Configuración dispersascattered_configConfiguración dispersa en muchos archivos❌
Clon de códigocode_cloneCódigo duplicado en el proyecto✅

Released under the MIT License.