有时,我的老板会向我们抱怨:
为什么我们需要这么长的时间来实现一个功能?
实际上,该功能之前已经在另一个应用程序中实现,您只需要从那里复制和粘贴代码.成本应该很低.
这真的是一个难题,因为在我看来,复制和粘贴代码并不是一件简单的事情.
你有什么理由向你的非技术老板解释这个吗?
我正在寻找与语言无关的代码复制工具.很容易找到特定于语言的代码复制工具(用于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上询问问题?
在一个项目中,我发现了一些"闻"的css文件,就像它们中有复制粘贴的规则一样.
我想知道你在文件中检测复制粘贴内容的策略是什么.
只是好奇,我想听听你提示文件相似性的提示和技巧!
我想自动将重复或类似的C代码移动到函数中.
这必须在Linux下运行.
我的公司使用mod_perl,axkit和apache的组合开发web应用程序.我们在unix操作系统中都有大量的Perl模块,javascripts等.
每当我需要编写一个新函数时,我会尝试进行一些代码重用,但事情就是所有的Perl模块和javascripts分散在各个文件夹中.
我讨厌以后才编写一些代码,发现已经有一个函数做了同样的事情,我当前的方法是尝试grep表名,看看是否有冗余函数,但除此之外,我几乎会只是放弃并编写一个新功能,因为我不想花太多时间搜索和找不到任何东西.
有一个更好的方法吗?或者甚至更好,我可以安装免费软件工具,它可以帮助我正确管理所有功能和模块,甚至允许开发人员记录评论等.
有这样的讨论在第C检测代码的重复使用++工具,我们有这样的事情在UNIX平台的Perl代码?
谢谢〜史蒂夫
copy-paste ×2
automation ×1
c ×1
code-reuse ×1
dry ×1
duplicates ×1
javascript ×1
maintenance ×1
perl ×1
search ×1
simian ×1
similarity ×1
text ×1