Was ist die Liste der gültigen @SuppressWarnings
Warnnamen in Java?
Das Bit, das zwischen dem ("")
In kommt @SuppressWarnings("")
.
java
eclipse
warnings
compiler-warnings
suppress-warnings
Ron Tuffin
quelle
quelle
"ProhibitedExceptionDeclared"
in Eclipse Collections Framework (org.eclipse.collections.impl.block.function.checked.ThrowingFunction
), und das ist unten nicht aufgeführt.Antworten:
Dies hängt von Ihrer IDE oder Ihrem Compiler ab.
Hier ist eine Liste für Eclipse Galileo:
Liste für Indigo fügt hinzu:
Liste für Juno fügt hinzu:
Kepler und Luna verwenden dieselbe Token-Liste wie Juno ( Liste ).
Andere werden ähnlich sein, aber variieren.
quelle
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
. Einige Umgebungen (z. B. NetBeans 7.3 mit Java 6 JDK [1.6.0_41]) werden"o possibly null"
beimo.toString()
Aufruf generiert , obwohlo
sie zu diesem Zeitpunkt nicht null sein können.semicolon
scheint nicht in Luna zu arbeiten? :( Kann jemand überprüfen, obsemicolon
tatsächlich gültig ist?Alle Werte sind zulässig (nicht erkannte werden ignoriert). Die Liste der erkannten ist compilerspezifisch.
In den Java-Tutorials
unchecked
unddeprecation
als die beiden Warnungen aufgeführt, die in der Java-Sprachspezifikation erforderlich sind, sollten sie daher für alle Compiler gültig sein:Die spezifischen Abschnitte in der Java-Sprachspezifikation, in denen sie definiert sind, sind nicht versionübergreifend konsistent. In der Java SE 8-Spezifikation
unchecked
unddeprecation
sind in den Abschnitten 9.6.4.5 als Compiler-Warnungen aufgeführt. @SuppressWarnings bzw. 9.6.4.6 @Deprecated .Beim Ausführen
javac -X
des Sun-Compilers wird beim Ausführen eine Liste aller von dieser Version erkannten Werte angezeigt. Für 1.5.0_17 scheint die Liste wie folgt zu sein:quelle
Die Liste ist compilerspezifisch. Aber hier sind die Werte, die in Eclipse unterstützt werden :
Sun JDK (1.6) hat eine kürzere Liste unterstützter Warnungen:
Der neueste verfügbare Javac (1.6.0_13) für Mac enthält die folgenden unterstützten Warnungen
quelle
Ein neuer Favorit für mich ist
@SuppressWarnings("WeakerAccess")
IntelliJ, das verhindert, dass es sich beschwert, wenn es denkt, dass Sie einen schwächeren Zugriffsmodifikator haben sollten, als Sie verwenden. Wir müssen für einige Methoden öffentlich zugänglich sein, um das Testen zu unterstützen, und die@VisibleForTesting
Anmerkung verhindert die Warnungen nicht.ETA: "Anonym" kommentierte auf der mit @MattCampbell verknüpften Seite den folgenden unglaublich nützlichen Hinweis:
quelle
Mir ist aufgefallen, dass
//noinspection
dies in IntelliJ automatisch generiert werden kann@SuppressWarninigs
vor der Erklärung noch keinen Plan haben//noinspection
indem Sie Alt + Eingabetaste drücken , wenn Sie die Warnung ausgewählt haben, und dann die rechte Pfeiltaste verwenden , um die Option Unterdrücken für ... anzuzeigenEndete hier, als ich eine Warnung von IntelliJ unterdrücken wollte, dass "Schalter zu wenige Fallbezeichnungen hat". Ich habe keine vollständige Liste für die
@SuppressWarning
Unterstützung von IntelliJ gefunden, aber//noinspection
den Trick für mich getan.quelle
//noinspection SwitchStatementWithTooFewBranches
vor denswitch
Arbeiten auch für mich.Und dies scheint eine viel vollständigere Liste zu sein, in der ich einige für Android-Studio spezifische Warnungen gefunden habe, die ich anderswo nicht finden konnte (z. B. SynchronizeOnNonFinalField).
https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html
Oh, jetzt widersprechen die Richtlinien von SO den Einschränkungen von SO. Einerseits soll ich die Liste kopieren, anstatt nur den Link bereitzustellen. Andererseits würde dies die maximal zulässige Anzahl von Zeichen überschreiten. Hoffen wir also nur, dass der Link nicht unterbrochen wird.
quelle
JSL 1.7
In der Oracle-Dokumentation wird Folgendes erwähnt:
unchecked
: Nicht aktivierte Warnungen werden durch die Zeichenfolge "nicht aktiviert" gekennzeichnet.deprecation
: Ein Java-Compiler muss eine Verfallswarnung erzeugen, wenn ein Typ, eine Methode, ein Feld oder ein Konstruktor verwendet wird, dessen Deklaration mit der Annotation @Deprecated versehen ist (dh überschrieben, aufgerufen oder namentlich referenziert), es sei denn: [...] The Die Verwendung erfolgt innerhalb einer Entität, die mit Anmerkungen versehen ist, um die Warnung mit der Anmerkung @SuppressWarnings ("Verfall") zu unterdrücken. oderAnschließend wird erläutert, dass Implementierungen eigene hinzufügen und dokumentieren können:
quelle
unchecked
der einzige ist, der von der Norm gebilligt wird. Der nächste Abschnitt von dem, den Sie zitiert haben, besagt, dass keine@SuppressWarnings("deprecation")
Ich möchte nur hinzufügen, dass es eine Hauptliste der IntelliJ-Unterdrückungsparameter gibt: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c
Es sieht ziemlich umfassend aus. Teilweise:
quelle
Wenn Sie SonarLint verwenden, versuchen Sie es über der Methode oder klassifizieren Sie die gesamte Tintenfischzeichenfolge: @SuppressWarnings ("squid: S1172")
quelle