🛡️ Code Quality · Cleanup

@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.

Télécharger MaifadyVoir les 30 agents

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

  1. Tente d'utiliser un outil natif s'il existe (ts-prune, knip, vulture, deadcode).
  2. Sinon, fait du grep-based : pour chaque symbole exporté, compte les références hors du fichier de définition.
  3. Cross-check contre les fichiers de config (routes.php, urls.py, webpack config) où la référence peut être dynamique.
  4. Cross-check contre les tests (code utilisé seulement par les tests = débattable).
  5. 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.

Prêt à alléger ton repo ?

Télécharger Maifady