2013-04-04 3 views
3

Есть ли способ отключить авто-бокс для Java 5 и 6 в IntelliJ IDEA, чтобы не позволить разработчику использовать эту функцию в среде IDE?Отключение автоматического бокса для Java в IntelliJ IDEA

+7

Из интереса, почему вы хотите это сделать? – RNJ

+0

@RNJ Держу пари, ответ будет: потому что он не исполнен. – Ingo

+0

Не знаю, если. Он встроен в JDK, и он не настраивается. – duffymo

ответ

11

Я не думаю, что вы можете отключить автоматический бокс при сохранении целевой компиляционной версии - это особенность конкретной версии Java.

Что вы, можете сделать сделать в IntelliJ, измените уровень контроля Auto-boxing на "Error". Для этого:

  • Перейдите в «Настройки»> «Инспекции» и введите «бокс» в панель поиска.
  • Нажмите «Авто-бокс».
  • Установите степень серьезности на «Ошибка». Это приведет к тому, что тест проверок будет сообщать о любом возникновении автоматического бокса в качестве ошибки. Вы должны сделать то же самое и для автоматической распаковки.

Далее вниз линии, вы можете добавить код проверки которые выполняются при проверке кода (PMD, FindBugs, Cobertura, и др. И др.), Который выйдет из строя сборки, если что-либо быть автоматически боксировал или авто-распакованный ,

3

Вы не можете отключить автобоксинг, не превращая Java в форму «не-Java»; однако вы можете уменьшить влияние некоторых из самых ужасных проблем с автобоксингом.

FindBugs, анализатор кода, содержит несколько конкретных правил автобоксинга, чтобы избежать ситуаций, когда автооблок становится довольно проблематичным.

Все они начинаются с "Bx:" Идентификатор:

  1. Ве: Примитивное значение в штучную упаковке, и затем сразу же распакованный (BX_BOXING_IMMEDIATELY_UNBOXED)
  2. Вй: Примитивное значение в штучной упаковке, то распакованным выполнять примитивные принуждение (BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION)
  3. Ве: в штучной упаковке значение распакованное, а затем сразу reboxed (BX_UNBOXING_IMMEDIATELY_REBOXED)
  4. Bx: метод выделяет примитив в штучной упаковке только для вызова toString (DM_BOXED_PRIMITIVE_TOSTRING)
  5. Bx: метод вызывает неэффективный конструктор чисел с плавающей запятой; использовать статическое значениеOf вместо (DM_FP_NUMBER_CTOR)
  6. Bx: метод вызывает неэффективный конструктор Число; использовать статический valueOf вместо (DM_NUMBER_CTOR)

Вы можете интегрировать отчет Findbug в сборку, и в зависимости от системы сборки вы используете, даже сборки жалуются или провальными в зависимости от наличия проблем, обнаруженных с помощью FindBugs.