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.