@dead-code-finderLe démolisseur — détecte le code qui ne sert plus à rien
Maifady est un plugin Claude Code 100% gratuit avec 30 agents IA — @dead-code-finder est l'agent qui parcourt ton repo, trouve les fonctions jamais appelées, les imports oubliés, les fichiers orphelins et les TODOs vieux de 2 ans — sans jamais supprimer à ta place, parce que le code mort apparent peut être appelé par réflexion dynamique.
Le problème qu'il résout
Tu reprends un projet de 4 ans. Tu sens qu'au moins 20% du code n'est plus utilisé — mais lequel ? Tu ne vas pas faire git grep sur 800 fonctions une par une. Et même si tu le faisais, tu raterais les appels par réflexion (getattr, call_user_func) et les routes définies en config.
@dead-code-finder fait le travail méthodique pour toi, avec deux niveaux de confiance : "safe to remove" et "please confirm".
Comment il bosse
- Tente d'utiliser un outil natif s'il existe (
ts-prune,knip,vulture,deadcode). - Sinon, fait du grep-based : pour chaque symbole exporté, compte les références hors du fichier de définition.
- Cross-check contre les fichiers de config (routes.php, urls.py, webpack config) où la référence peut être dynamique.
- Cross-check contre les tests (code utilisé seulement par les tests = débattable).
- Classe les résultats en Confident (0 ref, safe), Likely (1-2 refs suspectes, à confirmer), Unused imports, Orphan files, Stale TODOs.
Exemple concret
Tu tapes
›@dead-code-finder scan tout le repo. Distingue : - code mort certain - probablement mort (à confirmer) - imports inutilisés - TODOs > 1 an
Tu obtiens
# Dead code report — 47 findings ## Confident (safe to remove) — 14 items - src/utils/legacyParser.js — 0 imports outside this file - src/Helpers/oldCryptoHelper.php (entire file) — 0 references - ... ## Likely (please confirm) — 18 items - src/api/v1/users.php:exportToXML() — 1 ref in tests only - src/Mailer.php:formatLegacyHtml() — référencé dans config/legacy.php ## Unused imports — 11 items - src/App.tsx:3 — `import { OldButton } from './components/OldButton';` ## Stale TODOs — 4 items - src/db/migrate.js:88 — "TODO(@johnsmith) fix indexes" (auteur parti, 2 ans)
Pourquoi tu vas l'aimer
Repo plus léger
Supprimer 20% de code mort = 20% de surface en moins à comprendre, maintenir, tester.
Moins de surface d'attaque
Du code mort qui contient un bug de sécu reste un risque. Le supprimer = bénéfice sécu immédiat.
Ne supprime jamais
Il te donne le rapport, tu décides. Les "Likely" méritent une vérif manuelle. Les "Confident" sont safe.
False negatives > false positives
Mieux vaut rater du code mort que de supprimer du code vivant. La philo de l'agent est conservatrice.
Quand l'utiliser
✅ Idéal pour
- Reprise d'un projet legacy
- Cleanup mensuel régulier
- Avant un refactor majeur (supprimer le mort d'abord)
- Avant d'auditer la sécu (réduire la surface)
⚠️ Pas adapté quand
- Tu fais une lib publique avec API exposée → distingue le public via
@api,__all__, etc. - Repo polyglot très complexe avec dispatch dynamique massif → vérifie chaque finding manuellement
Combine avec ces agents
Questions fréquentes
Va-t-il supprimer le code automatiquement ?
Non, jamais. Il génère un rapport, tu décides. C'est volontaire : la réflexion dynamique, le dispatch par framework et les libs publiques peuvent faire que du code paraît mort mais est utilisé.
Distingue-t-il les degrés de confiance ?
Oui : "Confident" (0 référence trouvée, safe à supprimer), "Likely" (1-2 références suspectes, à confirmer manuellement), "Unused imports", "Orphan files", "Stale TODOs".
Et les libs publiques ?
Si ton projet est une lib avec un fichier package.json "exports" ou similaire, l'agent comprend que ces symboles sont du public API et ne les marque pas comme morts même sans usage interne.