4

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

4

2 回答 2

13

我不认为你可以在保持目标编译版本的同时完全禁用自动装箱——这是特定 Java 版本的一个特性。

可以在 IntelliJ 中做的是将 Auto-boxing 的检查级别更改为“错误”。要做到这一点:

  • 转到设置 > 检查,然后在搜索栏中输入“装箱”。
  • 点击“自动装箱”。
  • 将严重性设置为“错误”。这将导致检查测试将任何发生的自动装箱报告为错误。您也应该对自动拆箱执行相同的操作。

再往下,您可以添加在测试代码(PMD、FindBugs、Cobertura 等)时​​运行的代码检查,如果自动装箱或自动拆箱,构建将失败。

于 2013-04-04T18:37:49.723 回答
3

如果不让你的 Java 成为“非 Java”的形式,你就不能真正禁用自动装箱;但是,您可以减少一些最严重的自动装箱问题的影响。

FindBugs是一个代码分析器,它有一些特定的自动装箱规则,以避免出现自动装箱问题的情况。

它们都以“Bx:”标识符开头:

  1. Bx:原始值被装箱然后立即拆箱(BX_BOXING_IMMEDIATELY_UNBOXED)
  2. Bx:原始值被装箱然后拆箱以执行原始强制(BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION)
  3. Bx:装箱的值被拆箱,然后立即重新装箱(BX_UNBOXING_IMMEDIATELY_REBOXED)
  4. Bx:方法分配一个装箱的原语只是为了调用 toString (DM_BOXED_PRIMITIVE_TOSTRING)
  5. Bx:方法调用低效的浮点数构造函数;改用静态 valueOf (DM_FP_NUMBER_CTOR)
  6. Bx:方法调用低效的 Number 构造函数;改用静态 valueOf (DM_NUMBER_CTOR)

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

于 2013-04-04T18:38:33.173 回答