2013-03-18 44 views
3

如果有代码分析工具在升级到新的Java版本时能够提示代码更改,那么我就会徘徊不前。升级到新的Java版本:代码分析

例如:

  • 升级到Java 7
  • 找不必要的人工拳击的时候升级到Java 7
  • 看的时候多catch从句与同体外观为.close()呼吁autocloseable资源并在升级到Java 5时拆箱0
  • ...

是否有现成的工具或规则(例如Checkstyle)可以提供帮助?

+0

附注(以防万一):请不要迁移垃圾邮件(重新:*解锁iPhone可以使用预付费SIM卡与罗杰斯* *)。另外,如果您不知道目标网站的常见问题,请不要投票迁移。电话和电话服务问题与[su]无关。谢谢。 – Will 2013-03-27 12:08:02

回答

2

IntelliJ有一组标记为“语言迁移”的检查,可以帮助您找到可以从新的语言结构中受益的位置,例如增强for循环。

它甚至可以自动将这样的建议一次性应用到您的整个代码库 - 如果它当然是无风险的转换。

0

Findbugs处理.close(),如Java resource management: understanding Findbugs results所解释的,并且还捕获许多其他问题。

Finsbugs处理一些有问题的拳击,当用作==的操作数时。 Eclipse warnings可以配置为警告你所有隐式装箱/拆箱。

我不知道任何与来源明显相同的catch尸体。

+0

只有当您不关闭资源时,FindBugs才会抱怨。如果资源正确关闭,则不会提示语言迁移。如果Java 6代码正确,则迁移时FindBugs不会生成任何警告建议。 – Matteo 2013-03-19 08:21:41

+0

@Matteo,好点。我认为FindBugs的章程是为了发现问题,没有找到机会迁移到语义等价但更习惯的代码。 – 2013-03-19 17:13:56

0

我不知道专门为此设计的工具,但您可以使用多种工具进行通用代码审核,以检测或建议这些类型的升级。

  1. 的CodePro Analytix
  2. FindBugs的
  3. PMD(特别是用于冗余捕获块的CPD部分)
  4. Checkstyle的

由谷歌的CodePro Eclipse插件具有多个非常有用的代码分析的功能可以找到您提到的许多Java 7功能。

PMD中的复制/粘贴检测器通常可以检测复制粘贴的代码,因此它适用于查找冗余的catch块。

+0

CodePro Analytix已过时,甚至没有提供有关Java 7的任何信息,但也会为某些Java 7结构产生虚假警告(例如,没有看到在try-with-resource语句中使用变量)。 FindBugs,PMD和Checkstyle对语言迁移没有任何帮助。能够检测到冗余捕获的CPD应配置少量的匹配行,从而使其不可用。它也无法检测具有不同变量名称的语义相同的块。 – Matteo 2013-03-19 08:20:47