Este guia explica como usar as ferramentas de análise estática para identificar arquivos que não estão sendo usados no projeto Piano Trainer.
O que faz:
- Analisa todos os arquivos
.pydo projeto - Constrói um grafo de dependências baseado em imports
- Identifica arquivos não alcançáveis a partir dos entry points
Como usar:
python3 analyze-unused-files.pyEntry points detectados:
main.py(desktop app)backend/app/main.py(API)run_legacy_temp.py(se existir)
Saída esperada:
🔍 Análise de Arquivos Python Não Utilizados
==================================================
1️⃣ Encontrando arquivos Python...
Encontrados: 87 arquivos
2️⃣ Identificando entry points...
Entry points:
- main.py
- backend/app/main.py
3️⃣ Construindo grafo de dependências...
Módulos no grafo: 45
4️⃣ Encontrando módulos alcançáveis...
Módulos alcançáveis: 42
5️⃣ Identificando arquivos NÃO utilizados...
❌ Encontrados 3 arquivos possivelmente não utilizados:
📁 utils/
- old_helper.py
📁 legacy/
- trainer_gui.py
O que faz:
- Analisa todos os arquivos
.ts,.tsx,.js,.jsxdo viewer - Constrói grafo de dependências baseado em imports ES6, require, dynamic imports
- Identifica arquivos não alcançáveis a partir dos entry points
Como usar:
node analyze-unused-frontend.jsEntry points detectados:
viewer/index.tsxviewer/index.html
Saída esperada:
🔍 Análise de Arquivos TypeScript/JavaScript Não Utilizados
============================================================
1️⃣ Encontrando arquivos TypeScript/JavaScript...
Encontrados: 34 arquivos
2️⃣ Identificando entry points...
- index.tsx
3️⃣ Construindo grafo de dependências...
Arquivos no grafo: 34
4️⃣ Encontrando arquivos alcançáveis...
Arquivos alcançáveis: 31
5️⃣ Identificando arquivos NÃO utilizados...
❌ Encontrados 3 arquivos possivelmente não utilizados:
📁 .
- index-antigo.tsx
- test.tsx
- transport-client.ts
O que faz:
- Executa os dois scripts acima automaticamente
- Detecta ferramentas extras instaladas
- Gera relatório consolidado (opcional)
Como usar:
# Execução normal
bash check-unused.sh
# Gerar relatório em arquivo
bash check-unused.sh --reportO script verifica automaticamente:
- ✅ Python 3 instalado
- ✅ Node.js instalado
- ✅ Ferramentas extras (vulture, ts-prune, depcheck)
O que faz: Detecta código morto (funções, classes, variáveis não usadas)
Instalar:
pip install vultureUsar:
vulture . --exclude .venv,node_modules,distSaída:
core/old_module.py:15: unused function 'old_function' (60% confidence)
utils/helper.py:42: unused variable 'UNUSED_CONST' (100% confidence)
O que faz: Detecta exports não usados em TypeScript
Instalar:
npm install -g ts-pruneUsar:
cd viewer
ts-pruneSaída:
utils.ts:42 - oldHelper (used in module)
types.ts:15 - UnusedType
O que faz: Detecta dependências não usadas no package.json
Instalar:
npm install -g depcheckUsar:
cd viewer
depcheckSaída:
Unused dependencies
* old-package
* unused-library
Missing dependencies
* @types/react
git add -A
git commit -m "backup: antes da limpeza de arquivos"# Opção 1: Script mestre (recomendado)
bash check-unused.sh --report
# Opção 2: Scripts individuais
python3 analyze-unused-files.py
node analyze-unused-frontend.js
# Opção 3: Ferramentas extras
vulture . --exclude .venv,node_modules
cd viewer && ts-prune && cd ..
cd viewer && depcheck && cd ..Priorize arquivos com nomes suspeitos:
*-antigo.**-old.**-backup.**-1.*,*-2.**-temp.*test-*.*(se não for teste real)
Cuidado com falsos positivos:
- Arquivos usados dinamicamente (
importlib,require()dinâmico) - Scripts standalone (podem não estar no grafo)
- Arquivos de config/setup que são executados diretamente
- Entry points alternativos
Antes de deletar, verifique:
# Buscar referências no código
grep -r "nome_do_arquivo" . --exclude-dir={.venv,node_modules,.git}
# Verificar imports
grep -r "from.*nome_modulo" . --exclude-dir={.venv,node_modules}
grep -r "import.*nome_modulo" . --exclude-dir={.venv,node_modules}# Deletar arquivo individual
rm caminho/para/arquivo.py
# Ou usar o script de limpeza automático
bash cleanup-legacy.sh --dry-run # Teste primeiro
bash cleanup-legacy.sh # Execução real# Reinstalar dependências
make install
# Testar backend
make backend # Terminal 1
# Testar desktop
make desktop # Terminal 2
# Testar frontend (se aplicável)
cd viewer && npm run devgit add -A
git commit -m "chore: remove unused files
- Removed legacy/old files: index-antigo.tsx, transport-client.ts
- Verified with static analysis tools
- All tests passing"Problema: Testes podem não aparecer no grafo se não forem importados.
Solução:
- Manter arquivos com padrão
test_*.pyou*.test.ts - Não deletar se estiverem em pastas
tests/ou__tests__/
Problema: Scripts executados diretamente podem não ter imports.
Solução:
- Verificar se tem shebang (
#!/usr/bin/env python3) - Verificar se está referenciado em Makefile, package.json ou docs
Problema: importlib.import_module() ou require() dinâmico não são detectados.
Solução:
- Buscar por
importlibou__import__no código - Manter arquivos suspeitos até confirmar manualmente
✅ Arquivo listado como não usado E tem nome suspeito:
index-antigo.tsxhelper-old.pybackup_service.ts- Arquivos com
-1,-2no nome
service.py(pode ser importado dinamicamente)utils.ts(pode ser usado em build/config)
🚫 Arquivo em pasta crítica:
backend/app/main.py(entry point)core/config.py(pode ser usado em runtime)- Scripts em
/scripts(podem ser standalone)
A: Provavelmente é usado dinamicamente ou é um entry point não detectado. Revise manualmente.
A: Não. Análise estática tem limitações. Sempre revise manualmente e teste depois.
Python: Edite find_entry_points() em analyze-unused-files.py
TypeScript: Edite ENTRY_POINTS em analyze-unused-frontend.js
A: Por isso fazemos backup com git antes! Use git revert ou git checkout para recuperar.
# 1. Backup
git commit -am "backup antes da limpeza"
# 2. Análise completa
bash check-unused.sh --report
# 3. Ferramentas extras (opcional)
vulture . --exclude .venv,node_modules
cd viewer && ts-prune && depcheck && cd ..
# 4. Limpeza
bash cleanup-legacy.sh --dry-run
bash cleanup-legacy.sh
# 5. Teste
make install && make backend
# 6. Commit
git commit -am "chore: remove unused files"- Vulture docs: https://github.com/jendrikseipp/vulture
- ts-prune docs: https://github.com/nadeesha/ts-prune
- depcheck docs: https://github.com/depcheck/depcheck
- Análise de arquivos legados:
ANALISE-ARQUIVOS-LEGADOS.md
Última atualização: 04/02/2026