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

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

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

7 ответов


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

здесь список для Eclipse Галилео:

  • все для подавления всех предупреждений
  • бокс для подавления предупреждений относительно операций бокса / распаковки
  • cast для подавления предупреждений относительно операций приведения
  • dep-ann для подавления предупреждений относительно устаревший аннотация
  • осуждение для подавления предупреждений относительно осуждения
  • fallthrough подавить предупреждения относительно пропущенных перерывов в переключателе заявления
  • наконец-то для подавления предупреждений относительно блока finally, который не возвращение
  • прячась для подавления предупреждений относительно местных жителей, которые скрывают переменную
  • неполной-переключатель для подавлять предупреждения относительно отсутствующих записей в инструкции switch (случай перечисления)
  • НЛС подавить предупреждения относительно литералов строки не-НЛС
  • null для подавления предупреждений относительно нулевого анализа
  • ограничение подавить предупреждения относительно использования обескураженного или запрещенные ссылки
  • серийный для подавления предупреждений относительно пропавших без вести serialVersionUID поле для сериализуемого класса
  • static-access для подавления предупреждений относительно неправильного статического доступ
  • синтетическая-доступ для подавления предупреждений относительно неоптимизирована доступ к внутренним классам
  • unchecked для подавления предупреждений относительно беспрепятственно операции
  • неквалифицированный-поле-доступ к для подавления предупреждений относительно поля доступ неквалифицированный
  • неиспользованный для подавления предупреждений относительно неиспользуемого кода

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

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

список Джуно добавляет:

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

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

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


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

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

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

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

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

  • все
  • осуждение
  • unchecked
  • fallthrough
  • путь
  • серийный
  • наконец-то

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

  • allDeprecation устаревание даже внутри устаревшего кода
  • allJavadoc неверный или отсутствует javadoc
  • assertIdentifier вхождение assert используется в качестве идентификатора
  • бокс преобразование autoboxing
  • charConcat когда массив символов используется в конкатенации строк без явного преобразования в строку
  • conditionAssign возможное случайное логическое назначение
  • constructorName метод с имя конструктора
  • dep-ann отсутствует @Deprecated аннотация
  • осуждение использование устаревшего типа или элемента снаружи устаревший код
  • уныние использование типов, соответствующих правилу доступа
  • emptyBlock недокументированные пустой блок
  • enumSwitch, неполной-переключатель неполное перечисление переключатель
  • fallthrough возможен провал корпуса
  • fieldHiding поле скрывает другую переменную
  • finalBound введите параметр с конечной привязкой
  • наконец-то finally не обычно завершался
  • запрещен использование типов, соответствующих запрещенному правилу доступа
  • прячась макрос для fieldHiding, localHiding, typeHiding и maskedCatchBlock
  • indirectStatic косвенная ссылка на статический элемент
  • intfAnnotation тип аннотации, используемый в качестве супер интерфейса
  • intfNonInherited интерфейс не унаследованный метод совместимость
  • javadoc неверный javadoc
  • localHiding локальная переменная скрывает другую переменную
  • maskedCatchBlocks скрытый блок catch
  • НЛС non-NLS строковые литералы (без тегов // $NON-NLS -)
  • noEffectAssign назначение без эффекта
  • null потенциальный отсутствующий или избыточный null check
  • nullDereference отсутствует нулевой чек
  • over-ann отсутствует @ Override аннотация
  • paramAssign назначение параметра
  • pkgDefaultMethod попытка переопределить пакет-по умолчанию метод
  • raw использование типа raw (вместо параметризованного типа)
  • точка с запятой ненужная точка с запятой или пустой оператор
  • серийный отсутствует serialVersionUID
  • specialParamHiding конструктор или параметр сеттера, скрывающий другое поле
  • статический доступа макрос для indirectStatic и staticReceiver
  • staticReceiver если нестатический приемник используется для получения статического поля или вызова статического метода
  • супер переопределение метода без создания супер вызова
  • подавления включить @SuppressWarnings
  • syntheticAccess, синтетический доступ при выполнении синтетического доступа для innerclass
  • задачи включить поддержку тегов задач в исходный код
  • typeHiding параметр типа скрывает другой тип
  • unchecked снят операции типа
  • unnecessaryElse ненужное предложение else
  • неквалифицированный-поле-доступ, unqualifiedField неквалифицированные ссылка на поле
  • неиспользованный макрос для unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate и unusedThrown
  • unusedArgument неиспользуемый аргумент метода
  • unusedImport неиспользуемая ссылка на импорт
  • unusedLabel неиспользуемая метка
  • unusedLocal неиспользованная локальная переменная
  • unusedPrivate неиспользованная частная декларация участника
  • unusedThrown неиспользуемое объявленное исключение
  • uselessTypeCheck ненужная операция cast / instanceof
  • varargsCast аргумент varargs нуждается в явном приведении
  • warningToken необработанный предупреждающий токен в @SuppressWarnings

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

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

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

  • все
  • cast
  • осуждение
  • divzero
  • пустой
  • unchecked
  • fallthrough
  • путь
  • серийный
  • наконец-то
  • переопределяет

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


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

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

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


JSL 1.7

документация Oracle отмечает:

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

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

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


Я просто хочу добавить, что есть главный список параметров подавления 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