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.