2013-04-04 146 views
3

有没有办法在IntelliJ IDEA中禁用Java 5和6的自动装箱功能,以避免开发人员在IDE中使用此功能?在IntelliJ IDEA中禁用Java的自动装箱

+7

出于兴趣你为什么要这样做? – RNJ 2013-04-04 18:28:12

+0

@RNJ我打赌答案是:因为它不是高性能的。 – Ingo 2013-04-04 18:29:49

+0

不是我知道是否。它内置于JDK中,并且不可配置。 – duffymo 2013-04-04 18:31:46

回答

11

我不认为你可以彻底禁用自动装箱,同时保持目标编译版本 - 这是特定的Java版本的功能。

什么可以做在IntelliJ是将自动装箱的检查水平更改为“错误”。要做到这一点:

  • 转到设置>检查,并在搜索栏中键入“拳击”。
  • 点击“自动装箱”。
  • 将严重性设置为“错误”。这将导致检查测试报告任何发生的自动装箱错误。你也应该为自动拆箱做同样的事情。

再往下行了,你可以添加哪些测试代码(PMD,FindBugs的,的Cobertura,等人),这将构建失败时运行代码检查,如果有什么是自动装箱或自动拆箱。

3

如果不将Java变成“不是Java”的形式,你真的不能禁用自动装箱功能;但是,您可以减少一些最糟糕的自动装箱问题的影响。

FindBugs,一个代码分析器,有一些特定的自动装箱规则,以避免自动装箱变得相当成问题的情况。

它们都开始与 “BX:” 标识符:

  1. BX:原始值是盒装然后立即装箱 (BX_BOXING_IMMEDIATELY_UNBOXED)
  2. BX:原始值是盒装然后装箱以执行原始 胁迫(BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION)
  3. BX:盒装值是装箱,然后立即reboxed (BX_UNBOXING_IMMEDIATELY_REBOXED)
  4. Bx:方法分配一个盒装图元来调用toString (DM_BOXED_PRIMITIVE_TOSTRING)
  5. Bx:方法调用低效的浮点数构造函数; 改为使用static valueOf(DM_FP_NUMBER_CTOR)
  6. Bx:方法调用低效的Number构造函数;使用静态 的valueOf代替(DM_NUMBER_CTOR)

您可以将Findbug报告集成到您的构建,并根据您使用的构建系统上,甚至有构建抱怨或失败是由FindBugs的发现问题的存在。