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.

Problemas de Dependência

DetectorIDDescriçãoPadrão
Dependências CíclicascyclesDependências circulares entre arquivos
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
Alta ComplexidadecomplexityFunções com alta complexidade ciclomática
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_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.