Código Morto (Dead Code)
ID: dead_code | Gravidade: Baixa (padrão)
Código morto refere-se a funções, classes ou variáveis exportadas que não são importadas ou usadas em nenhum outro lugar do projeto.
Por que isso é um smell
- Custo de Manutenção: Desenvolvedores podem gastar tempo atualizando ou refatorando código que nem sequer é usado.
- Tamanho do Bundle: Aumenta o tamanho final da aplicação (embora muitos bundlers façam tree-shaking).
- Confusão: Faz com que a API de um módulo pareça maior e mais complexa do que realmente é.
Exemplos
Ruim
typescript
// utils.ts
export const usedHelper = () => { ... };
export const unusedHelper = () => { ... }; // Relatado como código morto
// main.ts
import { usedHelper } from './utils';Como corrigir
- Delete-o: Se estiver realmente sem uso, a melhor ação é a remoção.
- Marcar como Ponto de Entrada (Entry Point): Se for parte de uma API pública ou um import dinâmico, adicione-o a
entry_pointsna sua configuração.
Configuração
yaml
# Opções específicas da regra
rules:
dead_code:
exclude:
- '**/tests/**'
- '**/temp/**'
# Opções globais (nível raiz)
entry_points:
- 'src/index.ts'
- 'src/api/**/*.ts'Opções
Opções da regra (rules.dead_code)
exclude: Uma lista de padrões glob para ignorar ao detectar código morto. Arquivos que correspondam a esses padrões serão tratados como se não existissem para fins de análise de dependência de entrada.
Opções globais (nível raiz)
entry_points: Pontos de entrada globais que nunca devem ser relatados como código morto.
Regra ESLint
Este detector está disponível como uma regra ESLint para feedback em tempo real no seu editor.
javascript
// eslint.config.js
export default [
{
rules: {
'@archlinter/no-dead-code': 'warn',
},
},
];Veja Integração ESLint para instruções de configuração.