检测重复代码的工具(Java)

Ros*_*sim 46 java refactoring code-analysis

我在一个项目中,以前的程序员一直在复制粘贴代码.这些代码实际上是相同的(或非常相似),它们可以重构为一个.

我花了无数个小时手动重构这些代码,但我认为必须有更好的方法.有些是非常简单的静态方法,可以被移动到祖先类中(但是被以前的初级程序员复制粘贴).

是否有代码分析工具可以检测到这一点并提供报告/建议?如果可能的话,我更喜欢免费/开源工具.

uth*_*ark 25

我使用以下工具:

这两个工具都具有代码重复检测支持.但是他们都缺乏建议你如何重构代码的能力.

JetBrains IntelliJ IDEA Ultimate具有良好的静态代码分析和代码复制支持,但它不是免费的.

  • Checkstyle - 不再[不再](https://github.com/checkstyle/checkstyle/issues/523) (3认同)

wsa*_*lle 5

维基百科关于重复代码工具的文章中列出的大多数工具都会检测许多不同语言(包括Java)的重复项.

  • 由于有人从维基百科中删除了unncyclopedic链接,这里是旧版本页面的链接:http://en.wikipedia.org/w/index.php?title = Dupic_code&oldid = 522795578 (3认同)

小智 5

SonarQube可以检测重复的代码,但不建议消除它们.它是免费的 - 虽然使用默认设置它只能检测词法相同的克隆 - 有一个免费的CodeAnalyzer for SonarQube插件,您可以使用它来检测更复杂的结构克隆而不是词法克隆.