我希望快速了解一下我们有多少“复制粘贴”编码,有很多 C# / Java 工具可以检查此类事情。 有没有与 VB.NET 配合良好的此类工具?
(我看到了看起来有很多重复的代码,但希望得到一些数字来帮助我整理出来)
更新进度。
我刚刚尝试过Simian。
Clone Doctor不支持VB.NET(仅C#和VB 6以及许多其他)
2010 年 10 月:VB.net 添加到 CloneDR 支持的语言中
Clone Detective for Visual Studio仅支持C#
SolidSDD - 源代码重复检测器仅支持C、C++、C#和Java
DuplicateFinder是开源的,但在其他方面看起来非常像Simian,例如它只适用于文本行
ConQAT - 持续质量评估工具包 似乎有一个适用于 VB.NET 的克隆检测器(尚未尝试)
Gendarme 有点像 FXCop,并且有一个 AvoidCodeDuplicatedInSameClassRule 规则,这看起来非常有前途,因为它避免了在文本级别工作的问题。 刚刚尝试了一下,这是迄今为止最好的解决方案,可惜没有更大范围的搜索。
在声称此问题重复之前,请检查其他问题是否涉及 VB.NET,因为许多适用于 C# 的工具不适用于 VB.NET。 (但是,如果这个问题是真正的重复问题,我不会感到惊讶)
CodeRush 11.2 引入了一项名为重复检测和合并 (DDC) 的新功能
请务必检查它的选项,因为当更改了如此多的行、当然时间已经过去等时,您可以让它运行。
他们也在 DevExpress 网站上发布了一些不错的视频。
[我是CloneDR(“克隆医生”)的作者。]
CloneDR 通过相关编程语言的完整语法进行参数化。所以它不仅仅是匹配线条。 相反,它可以找到语法良好的克隆,其变体不仅仅是标识符更改,无论它们在一行中的何处停止或开始。
CloneDR 所依赖的引擎,DMS 软件重新工程工具包” 是一种用于以任何编程语言分析大型系统的工具,并使用语言描述来驱动分析。DMS 已经拥有多种可用的语言前端。
目前有 VBScript 和 VB6(作为“Visual Basic”的方言)。 它没有 VB.net,但考虑到 DMS 基础设施和我们在许多其他语言方面的经验,这将是非常简单的。
因此,CloneDR 可以很好地做到这一点,只需我们付出一点努力。
2010 年 10 月编辑:VB.net 添加为 CloneDR 可以处理的语言。
Atomiq 支持 vb.net 等其他语言,并且结果很好地呈现。
JetBrains 发布了控制台工具集 Resharper Console Tools 用于运行重复分析。安装后,它允许您进行与 TeamCity 相同的分析,并在本地生成重复报告,甚至使用 MSBuild 将重复搜索包含到自定义构建过程中。这个工具正是您所需要的。您可以在 JetBrains 博客文章
找到更多详细信息我曾经看过一个令人印象深刻的 Pattern Insight 演示;它的 CP Miner 可能就是您正在寻找的:http://patterninsight.com/products/cp-miner.php。 它似乎与语言无关,尽管我找不到任何关于 C/C++ 以外的语言的明确信息。
尝试Simian相似度分析器:
Simian 相似度分析器可识别 Java、C#、C、C++、COBOL、Ruby、JSP、ASP、HTML、XML、Visual Basic、Groovy 源代码甚至纯文本文件中的重复项。
请参阅我找到的工具的问题。