我已经在 Internet 上搜索了一段时间,但找不到任何可以分析一组 Perl 文件(模块或脚本)并标记重复或克隆或复制的免费(或廉价)工具/实用程序/模块/粘贴代码。
我现在好多了,但我过去常常在各处复制和粘贴代码段。我想清理它并修复我的旧代码重复,但我将不胜感激一些工具帮助,这样我就不必用细齿梳子浏览所有旧代码。另外,人工识别这种攻击很容易出错。
我已经在 Internet 上搜索了一段时间,但找不到任何可以分析一组 Perl 文件(模块或脚本)并标记重复或克隆或复制的免费(或廉价)工具/实用程序/模块/粘贴代码。
我现在好多了,但我过去常常在各处复制和粘贴代码段。我想清理它并修复我的旧代码重复,但我将不胜感激一些工具帮助,这样我就不必用细齿梳子浏览所有旧代码。另外,人工识别这种攻击很容易出错。
重复代码是什么意思?只是字符完全匹配或语义匹配。
有几个工具,如http://pmd.sourceforge.net/可以通过字符串匹配检测重复代码,这个工具适用于 java,但源匹配适用于纯文本。
如果你想要语义匹配,比如
sub A
{return 1;}
匹配
sub B
{
return 1;
}
然后你需要别的东西:(
我过去曾使用CCFinder来查找重复的代码部分。它工作得很好,但有一个..有趣的界面。它没有对 perl 的本机支持,但它确实有一个明文选项,它至少可以用于检测复制和粘贴。有一个 Windows 和 Ubuntu 解决方案 - 免费软件,不幸的是不是开源的。
Semantic Designs 制造了一款名为Clone Dr.的产品,该产品似乎能够分析大量语言类型的克隆代码段。但似乎他们的免费评估版仅适用于 Java 和 Cobol。
我刚刚评估了Simian。它有 15 天的免费评估期,单个用户许可证的费用为 100 美元。它不正式支持 Perl,但它确实将它们视为纯文本并无论如何都要分析它们。这是一个超级快速的实用程序!而且超级好用。该工具生成的报告简单易懂。我完全赞成这个工具。现在我只需要和我的老板谈谈,让他购买许可证。
这是另一个列出一些克隆检测工具的网页: