如果有代码分析工具在升级到新的Java版本时能够提示代码更改,那么我就会徘徊不前。升级到新的Java版本:代码分析
例如:
- 升级到Java 7
- 找不必要的人工拳击的时候升级到Java 7
- 看的时候多
catch
从句与同体外观为.close()
呼吁autocloseable资源并在升级到Java 5时拆箱0 - ...
是否有现成的工具或规则(例如Checkstyle)可以提供帮助?
如果有代码分析工具在升级到新的Java版本时能够提示代码更改,那么我就会徘徊不前。升级到新的Java版本:代码分析
例如:
catch
从句与同体外观为.close()
呼吁autocloseable资源并在升级到Java 5时拆箱0是否有现成的工具或规则(例如Checkstyle)可以提供帮助?
IntelliJ有一组标记为“语言迁移”的检查,可以帮助您找到可以从新的语言结构中受益的位置,例如增强for循环。
它甚至可以自动将这样的建议一次性应用到您的整个代码库 - 如果它当然是无风险的转换。
Findbugs处理.close()
,如Java resource management: understanding Findbugs results所解释的,并且还捕获许多其他问题。
Finsbugs处理一些有问题的拳击,当用作==
的操作数时。 Eclipse warnings可以配置为警告你所有隐式装箱/拆箱。
我不知道任何与来源明显相同的catch
尸体。
只有当您不关闭资源时,FindBugs才会抱怨。如果资源正确关闭,则不会提示语言迁移。如果Java 6代码正确,则迁移时FindBugs不会生成任何警告建议。 – Matteo 2013-03-19 08:21:41
@Matteo,好点。我认为FindBugs的章程是为了发现问题,没有找到机会迁移到语义等价但更习惯的代码。 – 2013-03-19 17:13:56
我不知道专门为此设计的工具,但您可以使用多种工具进行通用代码审核,以检测或建议这些类型的升级。
由谷歌的CodePro Eclipse插件具有多个非常有用的代码分析的功能可以找到您提到的许多Java 7功能。
PMD中的复制/粘贴检测器通常可以检测复制粘贴的代码,因此它适用于查找冗余的catch块。
CodePro Analytix已过时,甚至没有提供有关Java 7的任何信息,但也会为某些Java 7结构产生虚假警告(例如,没有看到在try-with-resource语句中使用变量)。 FindBugs,PMD和Checkstyle对语言迁移没有任何帮助。能够检测到冗余捕获的CPD应配置少量的匹配行,从而使其不可用。它也无法检测具有不同变量名称的语义相同的块。 – Matteo 2013-03-19 08:20:47
附注(以防万一):请不要迁移垃圾邮件(重新:*解锁iPhone可以使用预付费SIM卡与罗杰斯* *)。另外,如果您不知道目标网站的常见问题,请不要投票迁移。电话和电话服务问题与[su]无关。谢谢。 – Will 2013-03-27 12:08:02