wake-up-neo.com

Wie lautet die Liste der gültigen @SuppressWarnings-Warnungsnamen in Java?

Wie lautet die Liste der gültigen @SuppressWarnings-Warnungsnamen in Java?

Das Bit zwischen ("") in @SuppressWarnings("").

238
Ron Tuffin

Das hängt von Ihrem IDE oder Compiler ab.

Hier ist eine Liste für Eclipse Galileo:

  • all, um alle Warnungen zu unterdrücken
  • boxing, um Warnungen bezüglich Box-/Unboxing-Vorgängen zu unterdrücken
  • cast, um Warnungen in Bezug auf Cast-Vorgänge zu unterdrücken
  • dep-ann, um Warnungen in Bezug auf veraltete Annotationen zu unterdrücken
  • deprecation, um Warnungen in Bezug auf die Abwertung zu unterdrücken
  • fallthrough zum Unterdrücken von Warnungen bezüglich fehlender Unterbrechungen im Schalter Aussagen
  • finally, um Warnungen relativ zu unterdrücken, damit das nicht blockiert wird Rückkehr
  • Ausblenden zum Unterdrücken von Warnungen in Bezug auf Einheimische, die Variablen ausblenden
  • incomplete-switch, um Warnungen bezüglich fehlender Einträge zu unterdrücken in einer switch-Anweisung (Aufzählungsfall)
  • nls zur Unterdrückung von Warnungen in Bezug auf Nicht-nls-String-Literale
  • null, um Warnungen relativ zur Nullanalyse zu unterdrücken
  • Einschränkung zur Unterdrückung von Warnungen in Bezug auf die Verwendung von entmutigten oder verbotene Hinweise
  • serial zur Unterdrückung von Warnungen bezüglich fehlender serialVersionUID Feld für eine serialisierbare Klasse
  • static-access, um Warnungen relativ zu falschem statischem .__ zu unterdrücken. Zugriff
  • synthesizugriff, um Warnungen in Bezug auf nicht optimierte .__ zu unterdrücken. Zugang von inneren Klassen
  • nicht angehakt, um Warnungen bezüglich ungeprüfter Vorgänge zu unterdrücken
  • unqualified-field-access zur Unterdrückung von Warnungen in Bezug auf das Feld Zugang uneingeschränkt
  • unused, um Warnungen in Bezug auf nicht verwendeten Code zu unterdrücken

Liste für Indigo fügt hinzu:

  • javadoc, um Warnungen in Bezug auf Javadoc-Warnungen zu unterdrücken
  • rawtypes, um Warnungen bezüglich der Verwendung von Rohtypen zu unterdrücken
  • static-method, um Warnungen relativ zu Methoden zu unterdrücken, die als statisch deklariert werden könnten
  • super, um Warnungen bezüglich des Überschreibens einer Methode ohne Superaufrufe zu unterdrücken

List for Juno fügt hinzu:

  • resource zur Unterdrückung von Warnungen in Bezug auf die Verwendung von Ressourcen des Typs Closeable
  • sync-override zur Unterdrückung von Warnungen wegen fehlender Synchronisierung beim Überschreiben einer synchronisierten Methode

Kepler und Luna verwenden dieselbe Tokenliste wie Juno ( list ).

Andere werden ähnlich sein, aber variieren.

231
cletus

Alle Werte sind zulässig (nicht erkannte Werte werden ignoriert). Die Liste der erkannten ist compilerspezifisch. 

In Die Java-Tutorialsunchecked und deprecation werden als die zwei von The Java Language Specification erforderlichen Warnungen aufgeführt. Daher sollten sie für alle Compiler gültig sein:

Jede Compiler-Warnung gehört zu einer Kategorie. In der Java-Sprachspezifikation werden zwei Kategorien aufgelistet: Veraltet und nicht markiert.

Die spezifischen Abschnitte in The Java Language Specification wo sie definiert sind, sind nicht über Versionen hinweg konsistent. In der Java SE 8-Spezifikation sind unchecked und deprecation als Compiler-Warnungen in den Abschnitten 9.6.4.5 aufgeführt. @SuppressWarnings bzw. 9.6.4.6 @Deprecated.

Beim Compiler von Sun wird durch Ausführen von javac -X eine Liste aller Werte angezeigt, die von dieser Version erkannt werden. Für 1.5.0_17 scheint die Liste zu sein:

  • alles
  • missbilligung
  • ungeprüft
  • durchfallen
  • pfad
  • seriell
  • endlich
47
Martin McNulty

Die Liste ist compilerspezifisch. Aber hier sind die Werte, die in Eclipse unterstützt werden:

  • allDeprecation veraltet auch in veraltetem Code 
  • allJavadoc ungültiges oder fehlendes Javadoc 
  • assertIdentifier Vorkommen des als Bezeichner verwendeten Asserts 
  • boxing Autoboxing-Konvertierung 
  • charConcat, wenn ein Char-Array in einer String-Verkettung verwendet wird, ohne explizit in einen String umgewandelt zu werden 
  • conditionAssign mögliche versehentliche boolesche Zuweisung 
  • constructorName Methode mit Name des Konstruktors 
  • dep-ann fehlt @Deprecated Anmerkung 
  • deprecation Verwendung eines veralteten Typs oder Member außerhalb des veralteten Codes 
  • Discouraged Verwendung von Typen, die einer abgeratenen Zugriffsregel entsprechen 
  • emptyBlock undokumentierter leerer Block 
  • enumSwitch, unvollständiger-Schalter unvollständiger Enum-Schalter 
  • fallthrough möglicher Fallfall 
  • fieldHiding Feld versteckt eine andere Variable 
  • finalBound -Typ-Parameter mit Endbindung 
  • finally blockiert schließlich nicht normal 
  • forbidden Verwendung von Typen, die einer verbotenen Zugriffsregel entsprechen 
  • hiding -Makro für fieldHiding, localHiding, typeHiding und maskedCatchBlock 
  • independentStatic indirekter Verweis auf statische Member 
  • Annotationstyp intfAnnotation, der als Superschnittstelle verwendet wird 
  • intfNonInherited - Schnittstelle nicht geerbte Methodenkompatibilität 
  • javadoc ungültiger javadoc 
  • localHiding lokale Variable, die eine andere Variable verbirgt 
  • maskedCatchBlocks Versteckter Fangblock 
  • nls Nicht-nls-String-Literale (ohne Tags // // NON-NLS-) 
  • noEffectAssign Zuweisung ohne Wirkung 
  • null möglicherweise fehlende oder redundante Nullprüfung 
  • nullDereference fehlt Nullprüfung 
  • over-ann @Override-Anmerkung fehlt 
  • paramAssign Zuordnung zu einem Parameter 
  • pkgDefaultMethod versucht, die standardmäßige Paketmethode zu überschreiben 
  • raw verwendet einen Rohtyp (anstelle eines parametrisierten Typs) 
  • Semikolon unnötiges Semikolon oder leere Anweisung 
  • serial fehlt serialVersionUID 
  • specialParamHiding - Konstruktor oder Setter-Parameter, die ein anderes Feld ausblenden 
  • static-access -Makro für indirektStatic und staticReceiver 
  • staticReceiver, wenn ein nicht statischer Empfänger verwendet wird, um ein statisches Feld abzurufen oder eine statische Methode aufzurufen 
  • super überschreibt eine Methode, ohne einen Superaufruf auszuführen 
  • suppress aktivieren @SuppressWarnings 
  • synthesAccess, synthetischer Zugriff, wenn der synthetische Zugriff für die innere Klasse ausgeführt wird 
  • Aufgaben aktivieren die Unterstützung für Aufgaben-Tags im Quellcode 
  • typeHiding type-Parameter, der einen anderen Typ ausblendet 
  • unchecked unchecked Typoperation 
  • unnötaryElse unnötige else-Klausel 
  • unqualifizierter Feldzugang, unqualifiziertFeld unqualifiziert Verweis auf Feld 
  • unused -Makro für unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate und unusedThrown 
  • unusedArgument Nicht verwendetes Methodenargument 
  • unusedImport nicht verwendete Importreferenz 
  • unusedLabel unbenutztes Label 
  • unusedLocal nicht verwendete lokale Variable 
  • unusedPrivate Nicht verwendete private Mitgliedsdeklaration 
  • unusedThrown Ungenutzte deklarierte Ausnahme 
  • uselessTypeCheck unnötige Umwandlung/Instanzoperation 
  • varargsCast Das Argument varargs muss explizit umgewandelt werden 
  • warningToken unbehandeltes Warntoken in @SuppressWarnings 

Sun JDK (1.6) enthält eine kürzere Liste von unterstützten Warnungen:

  • deprecation Überprüfung auf Verwendung abgeschriebener Positionen. 
  • unchecked Geben Sie mehr Details zu ungeprüften Konvertierungswarnungen an, die in der Java-Sprachspezifikation vorgeschrieben sind. 
  • serial Warnung bei fehlenden serialVersionUID-Definitionen für serialisierbare Klassen. 
  • finally Warnung vor Klauseln, die nicht normal abgeschlossen werden können. 
  • fallthrough Überprüfen Sie die Schalterblöcke auf Fallfälle und geben Sie eine Warnmeldung für alle gefundenen Fälle aus. 
  • path Suchen Sie nach einem nicht vorhandenen Pfad in Umgebungspfaden (z. B. Klassenpfad). 

Die neuesten verfügbaren Javac (1.6.0_13) für Mac haben die folgenden unterstützten Warnungen

  • alles 
  • Besetzung 
  • deprecation 
  • divzero 
  • leer 
  • nicht angehakt 
  • durchfallen 
  • Pfad 
  • serial 
  • endlich 
  • überschreibt 
41
D. Wroblewski

Ein neuer Favorit für mich ist @SuppressWarnings("WeakerAccess") in IntelliJ. Dies verhindert, dass sich die Benutzer beschweren, wenn sie der Meinung sind, dass Sie einen schwächeren Zugriffsmodifikator haben sollten, als Sie verwenden. Wir müssen für einige Methoden öffentlichen Zugriff haben, um Tests zu unterstützen, und die @VisibleForTesting-Annotation verhindert die Warnungen nicht.

ETA: "Anonymous" kommentierte auf der Seite @MattCampbell die folgende, äußerst nützliche Anmerkung:

Sie sollten diese Liste nicht für den Zweck verwenden, der Sie sind beschreibend. IntelliJ fügt die SuppressWarnings für Sie hinzu automatisch, wenn Sie es bitten. Es war in der Lage, dies für .__ zu tun. so viele Veröffentlichungen zurück, wie ich mich erinnere.

Gehen Sie einfach zu dem Ort, an dem Sie die Warnung erhalten haben, und geben Sie Alt-Enter ein (oder wählen Sie es in der Inspektionsliste aus, wenn Sie es dort sehen) . Wenn das Menü erscheint, wird die Warnung angezeigt und angeboten, es für .__ zu beheben. Sie (z. B. wenn die Warnung "Die Methode ist möglicherweise statisch" ist, dann "statisch machen" ist das Angebot von IntellJ, um es für Sie zu beheben), anstatt "Eingabe", Verwenden Sie einfach die rechte Pfeiltaste, um auf das Untermenü zuzugreifen. Optionen wie "Prüfprofileinstellung bearbeiten" usw. Bei der Am Ende dieser Liste befinden sich Optionen wie "Alle Überprüfungen für Klasse unterdrücken", "Für Klasse unterdrücken", "Für Methode unterdrücken" und gelegentlich Msgstr "Für Anweisung unterdrücken". Wahrscheinlich möchten Sie, was auch immer. erscheint zuletzt auf der Liste. Wenn Sie eine davon auswählen, wird eine .__ hinzugefügt. @SuppressWarnings-Anmerkung (oder in einigen Fällen ein Kommentar) zu Ihrem Code die betreffende Warnung unterdrücken. Sie müssen nicht erraten, bei welchem ​​ Anmerkung, die hinzugefügt werden soll, da IntelliJ anhand der Warnung .__ auswählen wird. Sie haben ausgewählt.

5
barclay

JSL 1.7

Die Oracle-Dokumentation erwähnt:

  • unchecked: Nicht geprüfte Warnungen werden durch die Zeichenfolge "nicht geprüft" gekennzeichnet. 
  • deprecation: Ein Java-Compiler muss eine Verfallswarnung ausgeben, wenn ein Typ, eine Methode, ein Feld oder ein Konstruktor verwendet wird, dessen Deklaration mit der Annotation @Deprecated versehen ist (dh, durch den Namen überschrieben, aufgerufen oder referenziert wird). Die Verwendung erfolgt innerhalb einer Entität, die kommentiert wird, um die Warnung mit der Annotation @SuppressWarnings ("deprecation") zu unterdrücken. oder

Anschließend wird erläutert, dass Implementierungen eigene hinzufügen und dokumentieren können:

Compiler-Anbieter sollten die von ihnen unterstützten Warnungsnamen in Verbindung mit diesem Annotationstyp dokumentieren. Die Hersteller werden aufgefordert, zusammenzuarbeiten, um sicherzustellen, dass dieselben Namen auf mehreren Compilern funktionieren.

Ich möchte nur hinzufügen, dass es eine Masterliste mit IntelliJ-Unterdrückungsparametern gibt: https://Gist.github.com/vegaasen/157fbc6dce8545b7f12c

Es sieht ziemlich umfassend aus. Teilweise:

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
1
Matt Campbell

Und dies scheint eine viel umfassendere Liste zu sein, in der ich einige Warnungen gefunden habe, die spezifisch für Android-Studio sind und an anderer Stelle nicht gefunden wurden (beispielsweise 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. Auf der einen Seite soll ich die Liste kopieren, anstatt nur den Link zu geben. Auf der anderen Seite würde dies jedoch die maximal zulässige Anzahl von Zeichen überschreiten. Hoffen wir einfach, dass die Verbindung nicht bricht.

1
matteo

Mir ist aufgefallen, dass //noinspection in IntelliJ automatisch generiert werden kann.

  • stellen Sie sicher, dass Sie vor der Anweisung noch keinen Plan @SuppressWarninigs haben
  • Jetzt können Sie den spezifischen //noinspection automatisch erzeugen, indem Sie Alt + Enter drücken, wenn Sie die Warnung ausgewählt haben, und dann die Rechtspfeiltaste verwenden, um die Option Suppress for ... anzuzeigen

Endete hier, als ich eine Warnung von IntelliJ unterdrücken wollte. Ich habe keine vollständige Liste für die Unterstützung von IntelliJ @SuppressWarning gefunden, aber //noinspection hat den Trick für mich getan.

0
hb0

Wenn Sie SonarLint verwenden, versuchen Sie es über der Methode oder klassifizieren Sie die gesamte Squid-Zeichenfolge: @SuppressWarnings ("squid: S1172")

0
R Strauss