2013-04-04 83 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的發現問題的存在。