Каков список допустимых @SuppressWarnings
имен предупреждений в Java?
Бит , который приходит в между ("")
дюйма @SuppressWarnings("")
.
java
eclipse
warnings
compiler-warnings
suppress-warnings
Рон Туффин
источник
источник
"ProhibitedExceptionDeclared"
в Eclipse Collections Framework (org.eclipse.collections.impl.block.function.checked.ThrowingFunction
), и это не указано ниже.Ответы:
Это зависит от вашей IDE или компилятора.
Вот список для Eclipse Galileo:
Список для Индиго добавляет:
Список для Юноны добавляет:
Кеплер и Луна используют тот же список токенов, что и Юнона ( список ).
Другие будут похожи, но различаются.
источник
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
. Некоторые среды (например, NetBeans 7.3 с Java 6 JDK [1.6.0_41]) генерируют"o possibly null"
приo.toString()
вызове, даже еслиo
в этот момент не могут быть нулевымиsemicolon
не похоже на работу в луне? :( Может кто-нибудь проверить,semicolon
действительно ли это действительно так?Все значения разрешены (нераспознанные игнорируются). Список распознанных зависит от компилятора.
В Учебниках Java
unchecked
иdeprecation
перечислены как два предупреждения, требуемые Спецификацией языка Java, поэтому они должны быть действительны для всех компиляторов:Определенные разделы в Спецификации языка Java, где они определены, не согласуются между версиями. В спецификации Java SE 8
unchecked
иdeprecation
перечислены как предупреждения компилятора в разделах 9.6.4.5. @SuppressWarnings и 9.6.4.6 @Deprecated , соответственно.Для компилятора Sun запуск
javac -X
дает список всех значений, распознаваемых этой версией. Для 1.5.0_17 список выглядит так:источник
Список зависит от компилятора. Но вот значения, поддерживаемые в Eclipse :
Sun JDK (1.6) имеет более короткий список поддерживаемых предупреждений:
Последние доступные Javac (1.6.0_13) для Mac имеют следующие поддерживаемые предупреждения
источник
Новый фаворит для меня
@SuppressWarnings("WeakerAccess")
в IntelliJ, который не дает жаловаться, когда считает, что у вас должен быть более слабый модификатор доступа, чем вы используете. У нас должен быть публичный доступ к некоторым методам поддержки тестирования, и@VisibleForTesting
аннотация не предотвращает предупреждения.ETA: «Аноним» прокомментировал на странице, на которую ссылается @MattCampbell, следующую невероятно полезную заметку:
источник
Я заметил, что
//noinspection
может быть автоматически сгенерирован в IntelliJ@SuppressWarninigs
до утверждения//noinspection
, нажав Alt + Enter, когда у вас выбрано предупреждение, а затем используйте клавишу со стрелкой вправо, чтобы увидеть опцию Suppress for ...Закончился здесь, когда я хотел подавить предупреждение «Переключатель имеет слишком мало меток регистра» от IntelliJ. Я не нашел полный список поддержки IntelliJ,
@SuppressWarning
но//noinspection
сделал свое дело для меня.источник
//noinspection SwitchStatementWithTooFewBranches
доswitch
работы, а также для меня.И это, кажется, гораздо более полный список, где я нашел некоторые предупреждения, специфичные для 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 (то есть переопределяется, вызывается или ссылается по имени), если: [...] use находится внутри объекта, который аннотирован для подавления предупреждения с помощью аннотации @SuppressWarnings ("deprecation"); илиЗатем объясняется, что реализации могут добавлять и документировать свои собственные:
источник
unchecked
это единственный, одобренный стандартом; в самом следующем разделе из того, который вы цитировали, говорится, что предупреждения об устаревании не должны создаваться, когда «Использование находится внутри объекта, который аннотирован для подавления предупреждения с помощью аннотации@SuppressWarnings("deprecation")
»Я просто хочу добавить, что есть основной список параметров подавления IntelliJ по адресу: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c
Это выглядит довольно всеобъемлющим. Частичное:
источник
Если вы используете SonarLint, попробуйте выше метод или класс всей строки squid: @SuppressWarnings ("squid: S1172")
источник