Hat jemand ein Werkzeug oder eine empfohlene Übung, um ein Stück Code zu finden, der einem anderen Code ähnlich ist?Wie finden Sie ein ähnliches Codefragment?
Oft schreibe ich eine Funktion oder ein Codefragment und ich erinnere mich, dass ich schon so etwas geschrieben habe, und ich möchte die vorherige Implementierung wiederverwenden, aber die Verwendung der Nur-Text-Suche ergibt nichts, da ich das nicht verwendet habe Variablennamen, die genau gleich wären.
Ähnliche Codefragmente führen zu unnötiger Codeverdopplung, jedoch ist es bei einer großen Codebasis unmöglich, den gesamten Code im Speicher zu behalten. Gibt es irgendwelche Werkzeuge, die eine Analyse des Codes durchführen würden und markierte Fragmente oder Funktionen, die hinsichtlich der Funktionalität "ähnlich" sind?
Betrachten Sie folgende Beispiele:
float xDistance = 0, zDistance = 0;
if (camPos.X()<xgMin) xDistance = xgMin-camPos.X();
if (camPos.X()>xgMax) xDistance = camPos.X()-xgMax;
if (camPos.Z()<zgMin) zDistance = zgMin-camPos.Z();
if (camPos.Z()>zgMax) zDistance = camPos.Z()-zgMax;
float dist = sqrt(xDistance*xDistance+zDistance*zDistance);
und
float distX = 0, distZ = 0;
if (cPos.X()<xgMin) distX = xgMin-cPos.X();
if (cPos.X()>xgMax) distX = cPos.X()-xgMax;
if (cPos.Z()<zgMin) distZ = zgMin-cPos.Z();
if (cPos.Z()>zgMax) distZ = cPos.Z()-zgMax;
float dist = sqrt(distX*distX +distZ*distZ);
Es scheint mir, dies wurde bereits gestellt und beantwortet mehrmals:
https://stackoverflow.com/questions/204177/what-tool-to-find-code-duplicates-in-c-projects
How to detect code duplication during development?
Ich schlage vor, Schließen als Duplikat hier.
Eigentlich finde ich es eine allgemeinere Suche Problem ist, wie: Wie suche ich, ob die Frage bereits auf Stackoverflow gefragt wurde?
Verwandte Frage - http://stackoverflow.com/questions/2490884/why-is-copy-and-paste-of-code-dangerous – Oded
mögliche Duplikate von [Wie Code-Duplizierung während der Entwicklung zu erkennen?] (Http: //stackoverflow.com/questions/191614/how-to-detect-code-duplication-during-development) – Suma