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
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Dependências Cíclicas | cycles | Dependências circulares entre arquivos | ✅ |
| Ciclos de Tipos | circular_type_deps | Dependências circulares apenas de tipos | ❌ |
| Ciclos de Pacotes | package_cycles | Dependências cíclicas entre pacotes | ❌ |
| Violação de Camadas | layer_violation | Violações de camadas arquiteturais definidas | ❌ |
| Violação de SDP | sdp_violation | Violações do Princípio de Dependências Estáveis | ❌ |
Design de Módulo e Classe
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Módulo Deus | god_module | Módulos com muitas responsabilidades | ✅ |
| Módulo Hub | hub_module | Módulos "hub" altamente conectados | ❌ |
| Baixa Coesão | lcom | Classes com baixa coesão interna (LCOM4) | ❌ |
| Alto Acoplamento | high_coupling | Módulos com muitas dependências | ❌ |
| Módulo Disperso | module_cohesion | Funcionalidade dispersa em muitos arquivos | ❌ |
| Inveja de Recursos | feature_envy | Métodos que usam mais outra classe do que a própria | ❌ |
Qualidade do Código e Organização
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Código Morto | dead_code | Exports não utilizados | ✅ |
| Símbolos Mortos | dead_symbols | Funções e variáveis locais não utilizadas | ✅ |
| Tipos Órfãos | orphan_types | Tipos não conectados à base de código | ✅ |
| Abuso de Barrel | barrel_file | Arquivos barrel grandes causando acoplamento | ✅ |
| Obsessão por Primitivos | primitive_obsession | Uso excessivo de primitivos em vez de tipos de domínio | ❌ |
Complexidade e Tamanho
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Alta Complexidade | complexity | Funções com alta complexidade ciclomática | ✅ |
| Aninhamento Profundo | deep_nesting | Blocos de código profundamente aninhados | ✅ |
| Muitos Parâmetros | long_params | Funções com muitos parâmetros | ✅ |
| Arquivo Grande | large_file | Arquivos fonte que são muito grandes | ✅ |
Padrões de Mudança
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Cirurgia por Perdigotos | shotgun_surgery | Mudanças que exigem modificação em muitos arquivos | ❌ |
| Interface Instável | unstable_interface | Interfaces públicas que mudam frequentemente | ❌ |
Execução e Segurança
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Vazamento de Testes | test_leakage | Código de teste vazando para produção | ❌ |
| Acoplamento com Fornecedor | vendor_coupling | Acoplamento forte com bibliotecas externas | ❌ |
| Dependência Hub | hub_dependency | Dependência excessiva de pacotes externos | ❌ |
| Importação com Efeito Colateral | side_effect_import | Importações que disparam efeitos colaterais | ✅ |
| Estado Mutável Compartilhado | shared_state | Variáveis mutáveis exportadas | ❌ |
Métricas Arquiteturais
| Detector | ID | Descrição | Padrão |
|---|---|---|---|
| Violação de Abstratividade | abstractness | Zonas de Dor/Inutilidade (métrica I+A) | ❌ |
| Configuração Dispersa | scattered_config | Configuração espalhada por muitos arquivos | ❌ |
| Clone de Código | code_clone | Código duplicado no projeto | ✅ |