Skip to content

Visão Geral dos Detectores ​

O archlint vem com mais de 28 detectores integrados categorizados pelo tipo de problema arquitetural ou de qualidade de código que identificam.

TIP

Falsos Positivos: A análise arquitetural pode, às vezes, produzir falsos positivos, especialmente em projetos com carregamento dinâmico pesado, reflexão ou contêineres complexos de Injeção de Dependência (DI).

Problemas de Dependência ​

DetectorIDDescriçãoPadrão
Dependências Cíclicascyclic_dependencyDependências circulares entre arquivos✅
Clusters de Cicloscycle_clustersTeia complexa de dependências circulares✅
Ciclos de Tiposcircular_type_depsDependências circulares apenas de tipos❌
Ciclos de Pacotespackage_cyclesDependências cíclicas entre pacotes❌
Violação de Camadaslayer_violationViolações de camadas arquiteturais definidas❌
Violação de SDPsdp_violationViolações do Princípio de Dependências Estáveis❌

Design de Módulo e Classe ​

DetectorIDDescriçãoPadrão
Módulo Deusgod_moduleMódulos com muitas responsabilidades✅
Módulo Hubhub_moduleMódulos "hub" altamente conectados❌
Baixa CoesãolcomClasses com baixa coesão interna (LCOM4)❌
Alto Acoplamentohigh_couplingMódulos com muitas dependências❌
Módulo Dispersomodule_cohesionFuncionalidade dispersa em muitos arquivos❌
Inveja de Recursosfeature_envyMétodos que usam mais outra classe do que a própria❌

Qualidade do Código e Organização ​

DetectorIDDescriçãoPadrão
Código Mortodead_codeExports não utilizados✅
Símbolos Mortosdead_symbolsFunções e variáveis locais não utilizadas✅
Tipos Órfãosorphan_typesTipos não conectados à base de código✅
Abuso de Barrelbarrel_fileArquivos barrel grandes causando acoplamento✅
Obsessão por Primitivosprimitive_obsessionUso excessivo de primitivos em vez de tipos de domínio❌

Complexidade e Tamanho ​

DetectorIDDescriçãoPadrão
Complexidade Ciclomáticacyclomatic_complexityFunções com alta complexidade ciclomática✅
Complexidade Cognitivacognitive_complexityFunções com alta complexidade cognitiva✅
Aninhamento Profundodeep_nestingBlocos de código profundamente aninhados✅
Muitos Parâmetroslong_paramsFunções com muitos parâmetros✅
Arquivo Grandelarge_fileArquivos fonte que são muito grandes✅

Padrões de Mudança ​

DetectorIDDescriçãoPadrão
Cirurgia por Perdigotosshotgun_surgeryMudanças que exigem modificação em muitos arquivos❌
Interface Instávelunstable_interfaceInterfaces públicas que mudam frequentemente❌

Execução e Segurança ​

DetectorIDDescriçãoPadrão
Vazamento de Testestest_leakageCódigo de teste vazando para produção❌
Acoplamento com Fornecedorvendor_couplingAcoplamento forte com bibliotecas externas❌
Dependência Hubhub_dependencyDependência excessiva de pacotes externos❌
Importação com Efeito Colateralside_effect_importImportações que disparam efeitos colaterais✅
Estado Mutável Compartilhadoshared_mutable_stateVariáveis mutáveis exportadas❌

Métricas Arquiteturais ​

DetectorIDDescriçãoPadrão
Violação de AbstratividadeabstractnessZonas de Dor/Inutilidade (métrica I+A)❌
Configuração Dispersascattered_configConfiguração espalhada por muitos arquivos❌
Clone de Códigocode_cloneCódigo duplicado no projeto✅

Released under the MIT License.