So refaktorieren Sie eine Funktion in einer gesamten Codebasis, ohne etwas zu zerbrechen
Wann einsetzen: Sie müssen eine Funktion umbenennen, ihre Signatur ändern oder einen Helper inlinen — und sie wird in 30+ Dateien im Repo verwendet.
Voraussetzungen
- Sauberer Git-Arbeitsbaum —
git statuszeigt nichts Gestagtes — damit Sie pergit diffprüfen und pergit restorezurückrollen können - Filesystem-Root auf das Repo beschränkt — Starten Sie mit
npx -y @modelcontextprotocol/server-filesystem /abs/path/to/repo
Ablauf
-
Jede Aufrufstelle findenDurchsuche die Codebasis nach jeder Verwendung von
getUserProfile(. Gruppiere die Treffer nach Datei und gib mir eine Zählung pro Datei.✓ Kopiert→ Dateiliste mit Trefferzahlen, mit Unterscheidung zwischen Tests und Source -
Edit in einer Datei als Dry-RunZeige mir, wie der Edit in src/api/users.ts aussehen würde — als Diff, nicht als ganze Datei. Schreibe noch nichts.✓ Kopiert→ Minimaler Diff-Patch, kein komplettes Datei-Rewrite
-
Auf alle Dateien anwenden und berichtenWende die gleiche Transformation auf jede Datei aus Schritt 1 an. Nutze edit_file (zeilengenau), nicht write_file (Überschreiben). Melde mir jede Datei, bei der das Muster nicht sauber passte.✓ Kopiert→ Pro-Datei Erfolg-/Skip-Protokoll
Ergebnis: Ein fokussierter, überprüfbarer Git-Diff, gegen den Sie Tests laufen lassen können — keine überraschenden Ganze-Datei-Rewrites.
Fallstricke
- Claude nutzt
write_fileund verliert stillschweigend die Hälfte der Datei, wenn der Edit komplex ist — Fordern Sie explizitedit_filefür In-Place-Änderungen; erlauben Siewrite_filenur für neu erstellte Dateien - Treffer in unverwandtem Code (z. B.
getUserProfileAvatar) — Verankern Sie die Suche:getUserProfile(mit der schließenden Klammer oder nutzen Sie eine Word-Boundary-Regex