Запретить "переменную никогда не назначать" предупреждение в IntelliJ IDEA

Мы широко используем рефлексию для определения значений полей класса в нашем коде. Поля доступны в коде, но они никогда не назначаются, кроме как через отражение. Поэтому IDEA отображает предупреждение "никогда не назначается". Если я попрошу IDEA подавить проверку, она вставляет

@SuppressWarnings({"UnusedDeclaration"})

но это также отключает проверку того, используется ли поле или нет, чего мы не хотим.

Можно ли отключить только "не назначен" и оставить "не использован" только для определенных полей?

Версия IDEA - 10.5

Ответ 1

Вы можете использовать аннотацию, чтобы пометить ее как введенное поле. (аналогично тому, как это будет относиться к @EJB). Инспекции IntelliJ (по крайней мере, с версией 10.5) позволяют настраивать собственные аннотации, чтобы пометить поля как введенные.

Выберите "Анализ", "Осмотрите код" в меню, а затем перейдите к описанию неиспользуемого объявления и вы можете настроить аннотацию.

Ответ 2

  • выполнить анализ: проанализировать > код кода...
  • Щелкните правой кнопкой мыши на неиспользуемой декларации (ниже дерева резервирования декларации node)
  • Нажмите "Настроить аннотации..."
  • Добавьте com.google.google.inject.Inject и javax.inject.Inject

Ответ 3

Чтобы настроить аннотации в Android Studio 1.1.0 после проверки вашего кода, щелкните правой кнопкой мыши Неиспользуемое объявление → Изменить настройки → Настроить аннотации.

Android Studio 1.1.0

Android Studio 1.1.0

Ответ 4

Если вы всплываете окно подсказки действий (alt + Enter на Mac), оно должно предлагать вам подавить предупреждение для аннотации Inject

Ответ 5

Нет, похоже, что инспекция IDEA не такая мелкая. Даже с введенными аннотацией зависимыми полями такое же предупреждение может быть подавлено для полей, аннотированных с помощью @Inject. Автоматически предупреждение "не используется" подавляется.

Я только что попробовал запустить FindBugs-IDEA против класса, и никаких предупреждений и ошибок не было.

Ответ 6

Настройки → Редактор → Проверки → Избыточность декларации → Неиспользованная декларация → Точки входа → Аннотации

Откроется новое всплывающее окно, разделенное на 2 области: "Пометить как точку входа, если она помечена" и "Пометить поле как неявно написанное, если помечено". Только в последнем случае вы нажимаете значок "+" (Добавить класс аннотаций) и выбираете аннотацию с автопроводкой (или любую аннотацию, которую вы используете для внедрения зависимостей).

Это отключит предупреждение "личное поле никогда не назначается", но не отключит предупреждение "личное поле никогда не используется" в случае, если вы никогда не используете поле в коде класса, что является желательным поведением.

Это работало на IntelliJ IDEA Community Edition 2018.3.3

Ответ 7

возможно, частный var был неинициализирован Я не запустил var в androidStudio, поэтому покажите мне сообщение "никогда не назначается" "