13

我希望快速了解我们有多少“复制和粘贴”编码,有很多 C#/Java 工具可以检查这种类型的东西。有没有这样的工具可以很好地与 VB.NET 配合使用?

(我已经看到了很多重复的代码,但希望得到一些数字来帮助我整理出一个案例)


更新进度。

我刚试过猿猴。

Clone Doctor不支持 VB.NET(仅 C# 和 VB 6 以及许多其他)
2010 年 10 月:VB.net 添加到 CloneDR 支持的语言中

Visual Studio 的克隆侦探仅支持 C#

SolidSDD - 源代码重复检测器仅支持 C、C++、C# 和 Java

DuplicateFinder是开源的,但在其他方面看起来很像 Simian,例如它只适用于文本行

ConQAT - 持续质量评估工具包 似乎有一个适用于 VB.NET 的克隆检测器(尚未尝试过)

Gendarme有点像 FXCop 并且有一个AvoidCodeDuplicatedInSameClassRule规则,这看起来很有前途,因为它避免了在文本级别工作的问题。 刚试了一下,是目前为止最好的解决方案,可惜搜索范围不大。


在声称此问题重复之前,请检查其他问题是否针对VB.NET,因为许多适用于C#的工具对VB.NET效果不佳。(但是,如果这个问题是真正的重复,我不会感到惊讶)

4

9 回答 9

3

CodeRush 11.2 引入了一项称为重复检测和合并 (DDC) 的新功能

http://community.devexpress.com/blogs/markmiller/archive/2011/11/29/duplicate-detection-and-consolidation-in-coderush-for-visual-studio.aspx

一定要检查它的选项,因为当这么多行被改变时,你可以让它运行,当然时间已经过去了,等等。

他们也在 DevExpress 网站上发布了一些不错的视频。

于 2011-12-19T20:33:40.917 回答
1

四面:http ://www.redhillconsulting.com.au/products/simian/

于 2010-02-15T15:36:33.223 回答
1

[我是CloneDR(“克隆医生”)的作者。]

CloneDR 由相关编程语言的完整语法参数化。所以它不只是匹配线。相反,它可以找到语法结构良好的克隆,其变化不仅仅是标识符的变化,无论它们在哪里停止或开始在一行中。

CloneDR 所依赖的引擎“DMS Software Reengineering Toolkit”是一种用于以任何编程语言分析大型系统的工具,并使用语言描述来驱动分析。DMS 已经有多种语言前端可用。

目前它有 VBScript 和 VB6(作为“Visual Basic”的方言)。它没有 VB.net,但考虑到 DMS 基础架构和我们使用许多其他语言的经验,这将非常简单。

因此,CloneDR 可以很好地做到这一点,我们只需付出一点点努力。

编辑 2010 年 10 月:VB.net 添加为 CloneDR 可以处理的语言。

于 2010-02-16T18:47:26.097 回答
1

Atomiq在其他语言中支持 vb.net,并且结果很好地呈现。

于 2011-08-18T14:52:06.533 回答
1

JetBrains 发布了控制台工具集Resharper Console Tools来运行重复分析。安装后,它允许您进行与 TeamCity 相同的分析并在本地生成重复报告,甚至可以将重复搜索包含到使用 MSBuild 的自定义构建过程中。这个工具正是你需要的。您可以在 JetBrains博客文章中找到更多详细信息

于 2015-05-06T14:22:45.217 回答
0

尝试四面

Simian(相似性分析器)识别 Java、C#、C、C++、COBOL、Ruby、JSP、ASP、HTML、XML、Visual Basic、Groovy 源代码甚至纯文本文件中的重复。

于 2010-02-15T15:36:42.833 回答
0

我曾经看过一个令人印象深刻的 Pattern Insight 演示;它的 CP Miner 可能是您正在寻找的: http: //patterninsight.com/products/cp-miner.php。它似乎与语言无关,尽管我找不到任何关于 C/C++ 以外的语言的明确内容。

于 2010-10-22T17:56:26.203 回答
-1

卷起袖子,编写自己的解析器以将其与CPD一起使用?

于 2010-02-17T08:57:40.277 回答
-1

请参阅我找到的工具的问题。

于 2010-03-10T15:07:32.593 回答