在不久的将来,我将继承一个有点大的项目。我最近一直在对其进行一些小的更新,并注意到它的某些部分可以使用一些重构,因为有些方法可以执行相同的操作,但差异很小。
我想知道是否有一种工具可以获取一堆源代码并找到类似的代码块,以便可以识别它们以进行可能的重构。如果存在模糊搜索,那就太好了,这样它就可以识别类似的操作(而不是逐字重复的代码块)。
我不指望程序会重构代码本身,只是识别潜在的重复。
我的平台是 C#,但任何解决方案都会有所帮助
在不久的将来,我将继承一个有点大的项目。我最近一直在对其进行一些小的更新,并注意到它的某些部分可以使用一些重构,因为有些方法可以执行相同的操作,但差异很小。
我想知道是否有一种工具可以获取一堆源代码并找到类似的代码块,以便可以识别它们以进行可能的重构。如果存在模糊搜索,那就太好了,这样它就可以识别类似的操作(而不是逐字重复的代码块)。
我不指望程序会重构代码本身,只是识别潜在的重复。
我的平台是 C#,但任何解决方案都会有所帮助
http://www.codeplex.com/CloneDetectiveVS
“Clone Detective 是一个 Visual Studio 集成,可让您分析 C# 项目中在其他地方复制的源代码。”
从视觉上看,当你把它扔到一个有很多代码重复的项目中时,会发生很多事情。如果这与您第一次使用 Clone Detective 相结合,一开始可能会有点不知所措。
我真的推荐这个工具。它非常好。
CPD在令牌级别上工作,因此使用 C# 应该没问题。它也有一些机制来分解变量名和其他标识符。
我从未使用过它,但Simian可能对你有用
Simian(相似性分析器)识别 Java、C#、C、C++、COBOL、Ruby、JSP、ASP、HTML、XML、Visual Basic、Groovy 源代码甚至纯文本文件中的重复。事实上,simian 可以用于任何人类可读的文件,例如 ini 文件、部署描述符,应有尽有。
我目前正在使用Duplicate Finder。它适用于任何文本文件,我一直在我的 C# 项目中使用它,非常成功。它是命令行,所以我将它集成到我的构建过程中。
Simian是一款声称可以分析各种语言(包括 C#)的源代码的产品。我从来没有使用过它,所以我根本无法保证它。它可免费用于非商业用途,他们会将其出售给您用于商业项目。
我已经多次针对 java 和 ruby 代码库使用 Simian 并且效果很好。似乎它也支持c#。http://www.redhillconsulting.com.au/products/simian/overview.html