¿Alguien tiene alguna herramienta o práctica recomendada sobre cómo encontrar un código que sea similar a algún otro código?¿Cómo encontrar un fragmento de código similar?
A menudo escribo una función o un fragmento de código y recuerdo que ya he escrito algo así antes, y me gustaría reutilizar la implementación anterior, sin embargo, al utilizar la búsqueda de texto plano no se revela nada, ya que no usé el nombres de variables que serían exactamente lo mismo.
Tener fragmentos de código similares conduce a una duplicación innecesaria del código, sin embargo, con una gran base de código, es imposible mantener todos los códigos en la memoria. ¿Hay alguna herramienta que realice algún análisis del código y fragmentos marcados o funciones que son "similares" en términos de funcionalidad?
Considere los siguientes ejemplos:
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);
y
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);
Me parece que esto ha sido ya formuladas y contestadas varias veces:
https://stackoverflow.com/questions/204177/what-tool-to-find-code-duplicates-in-c-projects
How to detect code duplication during development?
Sugiero que se cierre como duplicado aquí.
En realidad creo que es un problema de búsqueda más general, como: ¿Cómo se busca si la pregunta ya se le pidió en StackOverflow?
Pregunta relacionada - http://stackoverflow.com/questions/2490884/why-is-copy-and-paste-of-code-dangerous – Oded
posible duplicado de [¿Cómo detectar la duplicación de código durante el desarrollo?] (Http: //stackoverflow.com/questions/191614/how-to-detect-code-duplication-during-development) – Suma