相关疑难解决方法(0)

为什么代码的"复制和粘贴"很危险?

有时,我的老板会向我们抱怨:

为什么我们需要这么长的时间来实现一个功能?

实际上,该功能之前已经在另一个应用程序中实现,您只需要从那里复制和粘贴代码.成本应该很低.

这真的是一个难题,因为在我看来,复制和粘贴代码并不是一件简单的事情.

你有什么理由向你的非技术老板解释这个吗?

copy-paste dry

129
推荐指数
8
解决办法
2万
查看次数

通用代码重复检测工具

我正在寻找与语言无关的代码复制工具.很容易找到特定于语言的代码复制工具(用于Java,C,PHP,...),但我想在自定义语法中对模板运行一些代码复制分析.

我不关心语法的高级解析,只是基于直线的原始字符串比较是好的.空白不敏感匹配将是一个加号,但不是必需的.(我自己规范化/消除空白并不难.)

有没有人知道可以(误)用于这样的工具?

谢谢.

language-agnostic code-analysis static-analysis code-duplication duplicates

22
推荐指数
2
解决办法
8786
查看次数

如何找到类似的代码片段?

有没有人有一些工具或一些推荐的练习如何找到一段与其他代码类似的代码?

我经常写一个函数或一个代码片段,我记得我之前已经编写了类似的东西,我想重用以前的实现,但是使用纯文本搜索并没有透露任何东西,因为我没有使用变量名称完全一样.

具有相似的代码片段会导致不必要的代码重复,但是如果代码库很大,则无法将所有代码保留在内存中.是否有任何工具可以对代码进行某些分析,并在功能方面标记片段或功能"相似"?

考虑以下示例:

  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)

在我看来,这已经被多次询问和回答:

/sf/ask/14292421/

如何在开发过程中检测代码重复?

我建议在这里关闭重复.


实际上我认为这是一个更普遍的搜索问题,如:如何在StackOverflow上询问问题?

language-agnostic search maintenance code-duplication

19
推荐指数
1
解决办法
3939
查看次数

显示文件相似性的提示

在一个项目中,我发现了一些"闻"的css文件,就像它们中有复制粘贴的规则一样.

我想知道你在文件中检测复制粘贴内容的策略是什么.

只是好奇,我想听听你提示文件相似性的提示和技巧!

copy-paste similarity simian

8
推荐指数
1
解决办法
2514
查看次数

5
推荐指数
1
解决办法
4669
查看次数

如何有效地管理Perl模块以进行代码重用?

我的公司使用mod_perl,axkit和apache的组合开发web应用程序.我们在unix操作系统中都有大量的Perl模块,javascripts等.

每当我需要编写一个新函数时,我会尝试进行一些代码重用,但事情就是所有的Perl模块和javascripts分散在各个文件夹中.

我讨厌以后才编写一些代码,发现已经有一个函数做了同样的事情,我当前的方法是尝试grep表名,看看是否有冗余函数,但除此之外,我几乎会只是放弃并编写一个新功能,因为我不想花太多时间搜索和找不到任何东西.

有一个更好的方法吗?或者甚至更好,我可以安装免费软件工具,它可以帮助我正确管理所有功能和模块,甚至允许开发人员记录评论等.

编辑

这样的讨论在第C检测代码的重复使用++工具,我们有这样的事情在UNIX平台的Perl代码?

谢谢〜史蒂夫

javascript perl code-reuse module-management

2
推荐指数
1
解决办法
361
查看次数