mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-31 06:03:29 +08:00
2.9 KiB
2.9 KiB
Refactor Clean
Identifique e remova código morto com segurança, com verificação de testes em cada passo.
Passo 1: Detectar Código Morto
Rode ferramentas de análise com base no tipo do projeto:
| Tool | What It Finds | Command |
|---|---|---|
| knip | Unused exports, files, dependencies | npx knip |
| depcheck | Unused npm dependencies | npx depcheck |
| ts-prune | Unused TypeScript exports | npx ts-prune |
| vulture | Unused Python code | vulture src/ |
| deadcode | Unused Go code | deadcode ./... |
| cargo-udeps | Unused Rust dependencies | cargo +nightly udeps |
Se nenhuma ferramenta estiver disponível, use Grep para encontrar exports com zero imports:
# Find exports, then check if they're imported anywhere
Passo 2: Categorizar Achados
Classifique os achados em níveis de segurança:
| Tier | Examples | Action |
|---|---|---|
| SAFE | Unused utilities, test helpers, internal functions | Delete with confidence |
| CAUTION | Components, API routes, middleware | Verify no dynamic imports or external consumers |
| DANGER | Config files, entry points, type definitions | Investigate before touching |
Passo 3: Loop de Remoção Segura
Para cada item SAFE:
- Rode a suíte completa de testes — Estabeleça baseline (tudo verde)
- Delete o código morto — Use a ferramenta Edit para remoção cirúrgica
- Rode a suíte de testes novamente — Verifique se nada quebrou
- Se testes falharem — Reverta imediatamente com
git checkout -- <file>e pule este item - Se testes passarem — Vá para o próximo item
Passo 4: Tratar Itens CAUTION
Antes de deletar itens CAUTION:
- Procure imports dinâmicos:
import(),require(),__import__ - Procure referências em string: nomes de rota, nomes de componente em configs
- Verifique se é exportado por API pública de pacote
- Verifique ausência de consumidores externos (dependents, se publicado)
Passo 5: Consolidar Duplicatas
Depois de remover código morto, procure:
- Funções quase duplicadas (>80% similares) — mesclar em uma
- Definições de tipo redundantes — consolidar
- Funções wrapper sem valor — inline
- Re-exports sem propósito — remover indireção
Passo 6: Resumo
Reporte resultados:
Dead Code Cleanup
──────────────────────────────
Deleted: 12 unused functions
3 unused files
5 unused dependencies
Skipped: 2 items (tests failed)
Saved: ~450 lines removed
──────────────────────────────
All tests passing ✅
Regras
- Nunca delete sem rodar testes antes
- Uma remoção por vez — Mudanças atômicas facilitam rollback
- Se houver dúvida, pule — Melhor manter código morto do que quebrar produção
- Não refatore durante limpeza — Separe responsabilidades (limpar primeiro, refatorar depois)