在不久的将来,我将继承一个有点大的项目。我最近对它进行了一些小的更新,并注意到它的一部分可能会使用一些重构,因为有些方法执行相同的操作,但差别很小。
我想知道是否有一个工具可以获取大量源代码并找到类似的代码块,以便可以识别它们以进行可能的重构。如果存在模糊搜索,那将是很好的,因此它可以识别类似的操作(除了只是逐字重复的代码)。
我不希望程序重构代码本身,只是确定潜在的重复。
我的平台是C#,但任何解决方案都会有所帮助
答案 0 :(得分:8)
http://www.codeplex.com/CloneDetectiveVS
“Clone Detective是一个Visual Studio集成,允许您分析C#项目以获取在其他地方重复的源代码。”
当你将它扔到一个包含大量代码重复的项目时,视觉上会有很多事情发生。如果它第一次与你使用克隆侦探结合,起初可能有点压倒性。
我真的推荐这个工具。非常好。
答案 1 :(得分:5)
CPD在令牌级别工作,因此C#应该没问题。它也有一些机制来分解变量名和其他标识符。
答案 2 :(得分:5)
我从未使用它,但Simian可能适合你
Simian(相似性分析器) 识别Java,C#,C中的重复, C ++,COBOL,Ruby,JSP,ASP,HTML,XML, Visual Basic,Groovy源代码和 甚至纯文本文件。实际上,猿猴 可用于任何人类可读的 文件,如ini文件,部署 描述符,你的名字。
答案 3 :(得分:4)
我目前正在使用Duplicate Finder。它适用于任何文本文件,我一直在我的C#项目中使用它,非常成功。它是命令行,所以我将它集成到我的构建过程中。
答案 4 :(得分:2)
Simian是一种声称能够分析各种语言(包括C#)的源代码的产品。我从来没有用过它,所以我根本不能保证它。它可以免费用于非商业用途,并且会将它出售给您进行商业项目。
答案 5 :(得分:2)
我已经多次使用过Simian来对抗java和ruby代码库,它运行得很好。似乎它也支持c#。 http://www.redhillconsulting.com.au/products/simian/overview.html
答案 6 :(得分:1)
如果您正在考虑在项目中找到重复的代码,那么您也应该考虑调查使用更广泛的static code analysis工具。
像Sonar之类的东西检查重复代码,编码标准,单元测试,代码覆盖率,复杂代码,潜在错误,注释以及设计和架构。