Comment refactoriser une fonction dans l'ensemble du codebase sans la casser
Quand l'utiliser : Vous devez renommer une fonction, modifier sa signature ou inliner un helper — et elle est utilisée dans 30+ fichiers du dépôt.
Prérequis
- Répertoire de travail git propre —
git statusn'affiche rien en staging — donc vous pouvez utilisergit diffpour examiner etgit restoresi nécessaire - Racine du système de fichiers limité au dépôt — Lancez avec
npx -y @modelcontextprotocol/server-filesystem /abs/path/to/repo
Déroulement
-
Trouvez chaque site d'appelRecherchez dans le codebase chaque utilisation de
getUserProfile(. Groupez les correspondances par fichier et donnez-moi un décompte par fichier.✓ Copié→ Liste des fichiers avec décomptes, sans distinction tests vs source -
Simuler l'édition sur un fichierMontrez-moi à quoi ressemblerait l'édition dans src/api/users.ts — un diff, pas le fichier entier. N'écrivez pas encore.✓ Copié→ Patch diff minimal, pas une réécriture du fichier entier
-
Appliquez à tous les fichiers et rapportezAppliquez la même transformation à chaque fichier de l'étape 1. Utilisez edit_file (niveau ligne), pas write_file (remplacement). Dites-moi tout fichier où la correspondance n'a pas été nette.✓ Copié→ Journal de succès/saut par fichier
Résultat : Un diff git ciblé et vérifiable sur lequel vous pouvez exécuter des tests — pas de réécriture surprise du fichier entier.
Pièges
- Claude utilise
write_fileet abandonne silencieusement la moitié du fichier lorsque l'édition est complexe — Exigez explicitementedit_filepour les modifications en place ; n'autorisezwrite_fileque pour les fichiers créés en nouveau - La correspondance touche du code non lié (par ex.
getUserProfileAvatar) — Ancrez la recherche :getUserProfile(avec la parenthèse fermante, ou utilisez un regex de limite de mot