当前位置: 首页 > 面试题库 >

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

高飞翮
2023-03-14
问题内容

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

我花了无数小时来手动重构这些代码,但我认为必须有更好的方法。有些是非常平凡的静态方法,可以将它们移到祖先类中(但以前的初级程序员都将其复制粘贴到整个类中)。

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


问题答案:

我使用以下工具:

  • PMD / CPD(BSD样式的许可证)。
  • Checkstyle (LGPL许可证) -支持已删除,请参阅详细信息。

两种工具都具有代码重复检测支持。但是他们两个都没有能力建议您如何重构代码。

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



 类似资料:
  • 遵循良好的代码规范是很有必要的。随着业务的发展,项目的持续集成,代码的复杂性会变得越来越高。在业务逻辑变得越来越复杂的时候,如果没有统一的规范进行约束,代码的可阅读性会越来越差,这样拓展和维护都将会变得非常棘手。遵守代码规范,能够让多人开发维护的项目代码风格保持统一,提高可阅读性,同时也能够在编码过程中规避掉一些低级错误和需要避开的坑,降低出错概率。 百度前端编码规范 百度提供了一套包括 Java

  • 大部分公司使用sonar吗?

  • 问题内容: 我有一些Java代码,我希望以此来衡量经验计算的复杂性。有一个趋势分析工具,将已编译的程序作为输入。 是否有与趋势教授相似的工具作为已编译Java程序的输入? 问题答案: 声纳通常使用:http://www.sonarsource.org/ 问候。

  • 问题内容: 是否有对Java混淆代码进行反混淆的工具? 这些代码是从编译的类中提取的,但是它们被混淆并且不可读。 问题答案: 您是否尝试过使用Java Deobfuscator(又名JDO) (一种智能反编译器)来减少代码的晦涩感? 目前,JDO执行以下操作: 将混淆的方法,变量,常量和类名重命名为唯一的,并更能指示其类型 在整个源代码树(测试版)中传播更改 具有易于使用的GUI 允许您指定字段,

  • 我在Java中使用SimpleDataFormat,由于某种原因,它没有检测到月份。这是我的代码: 调用此方法:返回以下内容:而我想返回: 我的输出格式有问题吗?

  • 下面是我为制作一个简单游戏而编写的一些基本代码的框架: 代码未按预期工作,例如,以下是代码的预期功能: 但是,再次读取播放行存在问题,这是实际输出: 如您所见,“再次播放”之前再次显示“输入您的姓名”能够接受输入。调试时,playing变量被设置为“”,因此我看不到任何输入,也无法确定正在使用什么。任何帮助都将不胜感激,谢谢!