是否有通过一组库代码(.net C#)查找冗余的工具?

时间:2011-12-07 16:27:56

标签: c# .net duplication

是否有通过一组库代码(.net C#)查找冗余的工具?

问题是我有许多.NET库,但它们往往有很多类似/重复的“帮助”或“实用程序”功能。有时代码可能不是完全实用的,但遵循类似的模式,命名略有不同。

是否有某种工具可以发现这些相似之处并在一批C#库中报告它们?

3 个答案:

答案 0 :(得分:4)

Visual Studio 11(目前只是开发人员预览版)具有此功能。您可以免费下载开发人员预览版以查看它。

它被称为代码克隆分析,它会搜索您的代码以寻找相似之处,并生成一个报告,该报告会从完全匹配到可能的匹配。

Here你可以找到一个小例子。

答案 1 :(得分:4)

CodeRush现在内置了重复代码查找程序。我不知道您的预算是针对这样的工具的,但我发现CodeRush / Refactor的好处!以抵消许可证的成本。

答案 2 :(得分:3)

请参阅我们的CloneDR工具,了解大型源代码中重复代码的精确和接近错误的块。

CloneDR的工作原理是使用编译器质量的前端解析源文本,构建代表代码的编译器数据结构(“AST”),并匹配树。这意味着它可以在布局,换行符或注释的情况下找到重复项。匹配过程可以找到在可参数化的意义上相似的代码块;它可以轻松找到具有重命名变量的类似块,或者使用已替换的语句或代码块。

有许多语言的版本,包括C#。可以在网站上找到样本C#克隆检测报告。

CloneDR不是“开发预览”。我在1998年写了一篇关于如何做到这一点的原始论文,从那以后一直在开发CloneDR;见Clone Detection Using Abstract Syntax Trees。 (Microsoft Clone检测器执行基于令牌的,而不是基于树的克隆检测,并产生恕我直言,答案不是那么好;事实上,这样的令牌式检测器为什么我写了这篇论文)。