Каков список допустимых имен предупреждений @SuppressWarnings в Java?

StackOverflow https://stackoverflow.com/questions/1205995

Вопрос

Каков список допустимых @SuppressWarnings имена предупреждений в Java?

Бит, который находится между ("") в @SuppressWarnings("").

Это было полезно?

Решение

Это зависит от вашей IDE или компилятора.

Вот такой Список для Eclipse Galileo:

  • ВСЕ чтобы подавить все предупреждения
  • бокс для подавления предупреждений, связанных с операциями упаковки / распаковки
  • отлитый чтобы подавить предупреждения, относящиеся к операциям приведения
  • деп-энн чтобы подавить предупреждения относительно устаревшей аннотации
  • осуждение для подавления предупреждений об устаревании
  • провал сквозь землю для подавления предупреждений относительно отсутствия перерывов в переключатель отчетность
  • наконец-то для подавления предупреждений относительно наконец-то блок, который не вернуться
  • прячущийся чтобы подавить предупреждения относительно локальных файлов, которые скрывают переменную
  • неполный переключатель для подавления предупреждений относительно отсутствующих записей в инструкции switch (случай перечисления)
  • nls для подавления предупреждений относительно строковых литералов, отличных от nls
  • ноль для подавления предупреждений относительно нулевого анализа
  • ограничение для подавления предупреждений об использовании нежелательных или запрещенных ссылок
  • серийный номер для подавления предупреждений относительно отсутствия поля serialVersionUID для сериализуемого класса
  • статический доступ для подавления предупреждений о неправильном статическом доступе
  • синтетический доступ для подавления предупреждений относительно неоптимизированного доступа из внутренних классов
  • непроверенный чтобы подавить предупреждения, относящиеся к непроверенным операциям
  • неквалифицированный доступ к полю для подавления предупреждений относительно поля доступ запрещен
  • неиспользованный чтобы подавить предупреждения, относящиеся к неиспользуемому коду

Список для добавления цвета индиго:

  • Javadoc чтобы подавить предупреждения относительно предупреждений javadoc
  • сырые типы для подавления предупреждений, связанных с использованием необработанных типов
  • статический метод для подавления предупреждений относительно методов, которые могут быть объявлены как статические
  • супер для подавления предупреждений относительно переопределения метода без супервызовов

Список для Юноны добавляет:

  • ресурс для подавления предупреждений относительно использования ресурсов типа Closeable
  • синхронизация-переопределение чтобы подавить предупреждения из-за отсутствия синхронизации при переопределении синхронизированного метода

Кеплер и Луна используют тот же список символов , что и Юнона (Список).

Другие будут похожи, но различаться.

Другие советы

Разрешены все значения (нераспознанные игнорируются).Список распознанных файлов зависит от компилятора.

В Учебные пособия по Java unchecked и deprecation перечислены как два предупреждения, требуемые спецификацией языка Java, следовательно, они должны быть действительны для всех компиляторов:

Каждое предупреждение компилятора относится к определенной категории.Спецификация языка Java перечисляет две категории:устаревший и непроверенный.

Конкретные разделы внутри Спецификация языка Java то, где они определены, не согласуется между версиями.В спецификации Java SE 8 unchecked и deprecation перечислены в качестве предупреждений компилятора в разделах 9.6.4.5.@Предупреждения о подавлении и 9.6.4.6 @Устарел, соответственно.

Для компилятора Sun, работающего javac -X выдает список всех значений, распознанных этой версией.Для 1.5.0_17 список выглядит следующим образом:

  • ВСЕ
  • осуждение
  • непроверенный
  • провал сквозь землю
  • путь
  • серийный номер
  • наконец-то

Этот список зависит от компилятора.Но вот значения, поддерживаемые в Затмение:

  • Всеобщее осуждение устаревание даже внутри устаревшего кода
  • Весь Явадок недопустимый или отсутствующий javadoc
  • assertIdentifier ( идентификатор утверждения ) появление assert, используемого в качестве идентификатора
  • бокс преобразование автоматической упаковки
  • Тушеный кот когда массив char используется в конкатенации строк без явного преобразования в строку
  • Условное обозначение возможное случайное логическое присвоение
  • Имя_конструктора метод с именем конструктора
  • деп-энн отсутствует @Устаревшая аннотация
  • осуждение использование устаревшего типа или элемента вне устаревшего кода
  • обескураженный использование типов, соответствующих правилу запрещенного доступа
  • Пустой блок недокументированный пустой блок
  • Перечисляющий переключатель, неполный переключатель неполный переключатель перечисления
  • провал сквозь землю возможный провальный случай
  • Выезд на поле поле, скрывающее другую переменную
  • Конечный предел введите параметр с окончательной привязкой
  • наконец-то наконец, блок не завершается нормально
  • запрещено использование типов, соответствующих правилу запрещенного доступа
  • прячущийся макрос для fieldHiding, localHiding, typeHiding и maskedCatchBlock
  • Косвенный статический косвенная ссылка на статический элемент
  • Внутреннее обозначение тип аннотации, используемый в качестве суперинтерфейса
  • Не унаследованный совместимость с не унаследованными интерфейсными методами
  • Javadoc недопустимый javadoc
  • Местное укрытие локальная переменная, скрывающая другую переменную
  • Замаскированные ловчие блоки скрытый блок защелки
  • nls строковые литералы, отличные от NLS (отсутствуют теги //$NON-NLS-)
  • noEffectAssign ( Без эффекта ) назначение без эффекта
  • ноль потенциальная проверка отсутствия или избыточности нуля
  • Нулевая ссылка отсутствует нулевая проверка
  • чрезмерная энн отсутствует аннотация @Override
  • Парамассивный сигнал присвоение параметру
  • Метод pkgDefaultMethod попытка переопределить метод по умолчанию для пакета
  • необработанный использование a необработанного типа (вместо параметризованного типа)
  • точка с запятой ненужная точка с запятой или пустой оператор
  • серийный номер отсутствует serialVersionUID
  • Специальный параметр параметр конструктора или установщика, скрывающий другое поле
  • статический доступ макрос для indirectStatic и staticReceiver
  • Статический приемник если нестатический приемник используется для получения статического поля или вызова статического метода
  • супер переопределение метода без выполнения супервызова
  • подавлять включить @SuppressWarnings
  • Синтетический доступ, синтетический доступ при выполнении синтетического доступа для innerclass
  • задачи включить поддержку тегов задач в исходном коде
  • Тайпхайдинг параметр типа, скрывающий другой тип
  • непроверенный операция с непроверенным типом
  • Ненужное другое ненужное предложение else
  • неквалифицированное поле-доступ, неквалифицированное поле неквалифицированный ссылка на поле
  • неиспользованный макрос для unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate и unusedThrown
  • Неиспользованный аргумент неиспользуемый аргумент метода
  • Неиспользуемый импорт неиспользуемая ссылка на импорт
  • Неиспользуемая метка неиспользованная этикетка
  • Неиспользуемый локальный неиспользуемая локальная переменная
  • Неиспользуемый доступ объявление неиспользуемого частного участника
  • Неиспользованный выброшенный неиспользуемое объявленное генерируемое исключение
  • Проверка типа использования ненужная операция приведения / создания экземпляра
  • varargsCast ( Переменный код ) аргумент varargs нуждается в явном приведении
  • Предупреждающий токен необработанный токен предупреждения в @SuppressWarnings

Sun JDK (1.6) имеет более короткий Список из поддерживаемых предупреждений:

  • осуждение Проверьте, используются ли амортизированные товары.
  • непроверенный Приведите более подробную информацию о непроверенных предупреждениях о преобразовании, которые предписаны спецификацией языка Java.
  • серийный номер Предупреждать об отсутствии определений serialVersionUID в сериализуемых классах.
  • наконец-то Предупреждать о предложениях finally, которые не могут завершаться обычным образом.
  • провал сквозь землю Проверьте блоки переключателей на наличие аварийных ситуаций и выдайте предупреждающее сообщение для всех обнаруженных.
  • путь Проверьте наличие несуществующего пути в путях среды (например, classpath).

Последняя версия доступного javac (1.6.0_13) для Mac содержит следующие поддерживаемые предупреждения

  • ВСЕ
  • отлитый
  • осуждение
  • нулевое значение
  • пустой
  • непроверенный
  • провал сквозь землю
  • путь
  • серийный номер
  • наконец-то
  • переопределяет

Новым фаворитом для меня является @SuppressWarnings("WeakerAccess") в IntelliJ, который удерживает его от жалоб, когда он думает, что у вас должен быть более слабый модификатор доступа, чем вы используете.У нас должен быть открытый доступ к некоторым методам поддержки тестирования, и @VisibleForTesting аннотация не предотвращает появление предупреждений.

ETA:"Аноним" прокомментировал на странице, на которую ссылается @MattCampbell, следующую невероятно полезную заметку:

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

Просто перейдите в папку, где у вас есть предупреждение, и введите Alt-Enter (или выберите его в списке проверок, если вы видите его там).Когда появится меню с предупреждением и предложением исправить это для вас (напримересли предупреждение "Метод может быть статическим", то "сделать статическим" предлагает ли IntellJ исправить это для вас), вместо выбора "enter", просто используйте кнопку со стрелкой вправо для доступа к подменю, в котором будут такие опции, как "Редактировать настройки профиля проверки" и так далее.В Нижней части этого списка будут такие опции, как "Подавлять все проверки для класса", "Подавлять для класса", "Подавлять для метода" и иногда "Подавлять для инструкции".Вы, вероятно, хотите какой бы из этих появляется последним в списке.Выбор одного из них добавит аннотацию @SuppressWarnings (или комментарий в некоторых случаях) к вашему коду подавление соответствующего предупреждения.Вам не нужно будет угадывать, какую аннотацию добавить, потому что IntelliJ выберет на основе предупреждения , которое вы выбрали.

И это, кажется, гораздо более полный список, в котором я нашел некоторые предупреждения, относящиеся к Android-Studio, которые я не смог найти в другом месте (например, SynchronizeOnNonFinalField)

https://jazzy.id.au/2008/10/30/ list_of_suppresswarnings_arguments.html

О, теперь правила SO противоречат ограничениям SO. С одной стороны, я должен копировать список, а не предоставлять только ссылку. Но с другой стороны, это будет превышать максимально допустимое количество символов. Так что давайте просто надеяться, что ссылка не сломается.

JSL 1.7

Документация Oracle упоминания:

  • unchecked:Непроверенные предупреждения обозначаются строкой "непроверено".
  • deprecation:Компилятор Java должен выдавать предупреждение об устаревании при использовании типа, метода, поля или конструктора, объявление которых снабжено аннотацией @Deprecated (т. е.переопределяется, вызывается или на него ссылаются по имени), если только:[...] Используется внутри объекта, который аннотирован для подавления предупреждения с помощью аннотации @SuppressWarnings ("устаревание");или

Затем объясняется, что реализации могут добавлять и документировать свои собственные:

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

Я просто хочу добавить, что основной список параметров подавления IntelliJ можно найти по адресу: https: // gist.github.com/vegaasen/157fbc6dce8545b7f12c

Это выглядит довольно всеобъемлющим. Частичное:

Warning Description - Warning Name

"Magic character" MagicCharacter 
"Magic number" MagicNumber 
'Comparator.compare()' method does not use parameter ComparatorMethodParameterNotUsed 
'Connection.prepare*()' call with non-constant string JDBCPrepareStatementWithNonConstantString 
'Iterator.hasNext()' which calls 'next()' IteratorHasNextCallsIteratorNext 
'Iterator.next()' which can't throw 'NoSuchElementException' IteratorNextCanNotThrowNoSuchElementException 
'Statement.execute()' call with non-constant string JDBCExecuteWithNonConstantString 
'String.equals("")' StringEqualsEmptyString 
'StringBuffer' may be 'StringBuilder' (JDK 5.0 only) StringBufferMayBeStringBuilder 
'StringBuffer.toString()' in concatenation StringBufferToStringInConcatenation 
'assert' statement AssertStatement 
'assertEquals()' between objects of inconvertible types AssertEqualsBetweenInconvertibleTypes 
'await()' not in loop AwaitNotInLoop 
'await()' without corresponding 'signal()' AwaitWithoutCorrespondingSignal 
'break' statement BreakStatement 
'break' statement with label BreakStatementWithLabel 
'catch' generic class CatchGenericClass 
'clone()' does not call 'super.clone()' CloneDoesntCallSuperClone

Я заметил , что //noinspection может быть автоматически сгенерирован в IntelliJ - интеллектуальный

  • убедитесь, что у вас еще нет плана @SuppressWarninigs перед заявлением
  • Теперь вы можете автоматически сгенерировать конкретный //noinspection ударив Alt+Ввод когда вы выберете предупреждение, а затем воспользуетесь клавиша со стрелкой вправо чтобы увидеть Подавлять для ... вариант

В итоге я оказался здесь, когда захотел подавить предупреждение IntelliJ о том, что "у коммутатора слишком мало меток регистра".Я не нашел полного списка для IntelliJ @SuppressWarning поддержка, но //noinspection сделал это за меня.

Если вы используете SonarLint, попробуйте выше метод или класс всей строки squid:     @SuppressWarnings (& Quot; кальмар: S1172 & Quot;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top