20

在不久的将来,我将继承一个有点大的项目。我最近一直在对其进行一些小的更新,并注意到它的某些部分可以使用一些重构,因为有些方法可以执行相同的操作,但差异很小。

我想知道是否有一种工具可以获取一堆源代码并找到类似的代码块,以便可以识别它们以进行可能的重构。如果存在模糊搜索,那就太好了,这样它就可以识别类似的操作(而不是逐字重复的代码块)。

我不指望程序会重构代码本身,只是识别潜在的重复。

我的平台是 C#,但任何解决方案都会有所帮助

4

7 回答 7

8

http://www.codeplex.com/CloneDetectiveVS

“Clone Detective 是一个 Visual Studio 集成,可让您分析 C# 项目中在其他地方复制的源代码。”

从视觉上看,当你把它扔到一个有很多代码重复的项目中时,会发生很多事情。如果这与您第一次使用 Clone Detective 相结合,一开始可能会有点不知所措。

我真的推荐这个工具。它非常好。

于 2009-07-09T15:22:14.637 回答
5

CPD在令牌级别上工作,因此使用 C# 应该没问题。它也有一些机制来分解变量名和其他标识符。

于 2009-07-09T15:18:23.317 回答
5

我从未使用过它,但Simian可能对你有用

Simian(相似性分析器)识别 Java、C#、C、C++、COBOL、Ruby、JSP、ASP、HTML、XML、Visual Basic、Groovy 源代码甚至纯文本文件中的重复。事实上,simian 可以用于任何人类可读的文件,例如 ini 文件、部署描述符,应有尽有。

于 2009-07-09T15:23:17.770 回答
4

我目前正在使用Duplicate Finder。它适用于任何文本文件,我一直在我的 C# 项目中使用它,非常成功。它是命令行,所以我将它集成到我的构建过程中。

于 2009-07-09T15:35:44.657 回答
2

Simian是一款声称可以分析各种语言(包括 C#)的源代码的产品。我从来没有使用过它,所以我根本无法保证它。它可免费用于非商业用途,他们会将其出售给您用于商业项目。

于 2009-07-09T15:23:53.760 回答
2

我已经多次针对 java 和 ruby​​ 代码库使用 Simian 并且效果很好。似乎它也支持c#。http://www.redhillconsulting.com.au/products/simian/overview.html

于 2009-07-09T15:24:47.703 回答
1

如果您正在考虑在项目中查找重复代码,那么也许您还应该考虑研究使用更广泛的静态代码分析工具。

Sonar之类的东西会检查重复代码、编码标准、单元测试、代码覆盖率、复杂代码、潜在错误、注释以及设计和架构。

您可以在 Wikipedia 上找到静态代码分析工具列表

于 2011-11-22T09:10:30.533 回答