是否存在:重复代码查找器?

问题描述 投票:0回答:7

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

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

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

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

language-agnostic refactoring dry code-reuse
7个回答
9
投票

http://www.codeplex.com/CloneDetectiveVS

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

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

我真的推荐这个工具。 太棒了。


5
投票

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


5
投票

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

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


4
投票

我目前正在使用重复查找器。它适用于任何文本文件,我已经在我的 C# 项目中使用它,非常成功。它是命令行,因此我已将其集成到我的构建过程中。


2
投票

我已经在 java 和 ruby 代码库上使用了 Simian 几次,并且效果很好。看来它也支持c#。 http://www.redhillconsulting.com.au/products/simian/overview.html


2
投票

Simian相似度分析器是一款声称可以分析各种语言(包括C#)的源代码的产品。我从未使用过它,所以我根本不能保证它。它免费供学术使用,并且他们拥有商业项目的许可证。


1
投票

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

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

您可以在维基百科上找到静态代码分析工具列表

© www.soinside.com 2019 - 2024. All rights reserved.