有时,我的老板会向我们抱怨:
为什么我们需要这么长的时间来实现一个功能?
实际上,该功能之前已经在另一个应用程序中实现,您只需要从那里复制和粘贴代码.成本应该很低.
这真的是一个难题,因为在我看来,复制和粘贴代码并不是一件简单的事情.
你有什么理由向你的非技术老板解释这个吗?
我们有一个相当大的代码库,400K LOC的C++,代码重复是一个问题.有没有可以有效检测重复代码块的工具?
理想情况下,这将是开发人员在开发过程中可以使用的东西,而不是偶尔运行以查看问题所在.如果我们可以将这样的工具与CruiseControl集成在每次签入后提供报告,那也很好.
我前段时间看过Duploc,它显示了一个漂亮的图形,但需要一个小型的环境来使用它,这使得自动运行它相当困难.
免费工具会很好,但如果有一些好的商业工具我也会感兴趣.
我正在寻找与语言无关的代码复制工具.很容易找到特定于语言的代码复制工具(用于Java,C,PHP,...),但我想在自定义语法中对模板运行一些代码复制分析.
我不关心语法的高级解析,只是基于直线的原始字符串比较是好的.空白不敏感匹配将是一个加号,但不是必需的.(我自己规范化/消除空白并不难.)
有没有人知道可以(误)用于这样的工具?
谢谢.
language-agnostic code-analysis static-analysis code-duplication duplicates
有没有人有一些工具或一些推荐的练习如何找到一段与其他代码类似的代码?
我经常写一个函数或一个代码片段,我记得我之前已经编写了类似的东西,我想重用以前的实现,但是使用纯文本搜索并没有透露任何东西,因为我没有使用变量名称完全一样.
具有相似的代码片段会导致不必要的代码重复,但是如果代码库很大,则无法将所有代码保留在内存中.是否有任何工具可以对代码进行某些分析,并在功能方面标记片段或功能"相似"?
考虑以下示例:
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);
Run Code Online (Sandbox Code Playgroud)
和
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);
Run Code Online (Sandbox Code Playgroud)
在我看来,这已经被多次询问和回答:
我建议在这里关闭重复.
实际上我认为这是一个更普遍的搜索问题,如:如何在StackOverflow上询问问题?