有没有人有一些工具或一些推荐的做法如何找到一段与其他代码相似的代码?
我经常写一个函数或一个代码片段,我记得我之前已经写过类似的东西,我想重用以前的实现,但是使用纯文本搜索不会显示任何内容,因为我没有使用变量名完全一样。
拥有相似的代码片段会导致不必要的代码重复,但是对于大型代码库,不可能将所有代码都保存在内存中。是否有任何工具可以对功能上“相似”的代码和标记的片段或功能进行一些分析?
考虑以下示例:
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);
和
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);
在我看来,这已经被问了好几次了:
https://stackoverflow.com/questions/204177/what-tool-to-find-code-duplicates-in-c-projects
我建议在这里关闭重复。
其实我认为这是一个更普遍的搜索问题,比如:如果问题已经在 StackOverflow 上被问过,我该如何搜索?