是否有通过一组库代码(.net C#)查找冗余的工具?
问题是我有许多 .NET 库,但它们往往有很多类似/重复的“帮助程序”或“实用程序”功能。有时代码可能并不完全实用,但遵循类似的模式,但命名略有不同。
是否有某种工具可以发现这些相似之处并在一批 C# 库中报告它们?
是否有通过一组库代码(.net C#)查找冗余的工具?
问题是我有许多 .NET 库,但它们往往有很多类似/重复的“帮助程序”或“实用程序”功能。有时代码可能并不完全实用,但遵循类似的模式,但命名略有不同。
是否有某种工具可以发现这些相似之处并在一批 C# 库中报告它们?
Visual Studio 11(目前只有开发者预览版)具有此功能。您可以免费下载 Developer Preview 以进行查看。
它被称为代码克隆分析,它在您的代码中搜索相似性并生成从完全匹配到可能匹配的报告。
在这里你可以找到一个小例子。
CodeRush现在内置了 Duplicate Code finder。我不知道您对这种工具的预算是多少,但我发现 CodeRush / Refactor 的好处!以抵消许可证的费用。
查看我们的CloneDR工具,以在大量源代码中查找准确和几乎未命中的重复代码块。
CloneDR 通过使用编译器质量的前端解析源文本、构建表示代码的编译器数据结构(“AST”)以及匹配树来工作。这意味着无论布局、换行符或注释如何,它都可以找到重复项。匹配过程可以找到在可以参数化的意义上相似的代码块;它很容易找到具有重命名变量或已被替换的语句或代码块的类似块。
有许多语言的版本,包括 C#。可以在网站上找到示例 C# 克隆检测报告。
CloneDR 不是“开发预览版”。早在 1998 年,我就写了一篇关于如何做好这件事的原始论文,并从那时起一直在开发 CloneDR。请参阅使用抽象语法树进行克隆检测。(Microsoft Clone 检测器进行基于令牌的克隆检测,而不是基于树的克隆检测,并且恕我直言,生成的答案不太好;事实上,这种令牌式检测器是我写这篇论文的原因)。