6

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

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

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

4

3 回答 3

4

Visual Studio 11(目前只有开发者预览版)具有此功能。您可以免费下载 Developer Preview 以进行查看。

它被称为代码克隆分析,它在您的代码中搜索相似性并生成从完全匹配到可能匹配的报告。

在这里你可以找到一个小例子。

于 2011-12-07T16:30:59.727 回答
4

CodeRush现在内置了 Duplicate Code finder。我不知道您对这种工具的预算是多少,但我发现 CodeRush / Refactor 的好处!以抵消许可证的费用。

于 2011-12-07T16:31:40.400 回答
3

查看我们的CloneDR工具,以在大量源代码中查找准确和几乎未命中的重复代码块。

CloneDR 通过使用编译器质量的前端解析源文本、构建表示代码的编译器数据结构(“AST”)以及匹配树来工作。这意味着无论布局、换行符或注释如何,它都可以找到重复项。匹配过程可以找到在可以参数化的意义上相似的代码块;它很容易找到具有重命名变量或已被替换的语句或代码块的类似块。

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

CloneDR 不是“开发预览版”。早在 1998 年,我就写了一篇关于如何做好这件事的原始论文,并从那时起一直在开发 CloneDR。请参阅使用抽象语法树进行克隆检测。(Microsoft Clone 检测器进行基于令牌的克隆检测,而不是基于树的克隆检测,并且恕我直言,生成的答案不太好;事实上,这种令牌式检测器是我写这篇论文的原因)。

于 2011-12-07T16:38:56.380 回答