Was ist die Liste der gültigen @SuppressWarnings Namen in Java Warnung?
-
05-07-2019 - |
Frage
Was ist die Liste der gültigen @SuppressWarnings
Warnung Namen in Java?
Das Bit, das zwischen dem ("")
in @SuppressWarnings("")
kommt.
Lösung
Es hängt von Ihrem IDE oder Compiler.
Hier ist eine Liste für Eclipse Galileo:
- alle alle Warnungen zu unterdrücken
- Boxen relativ Warnungen zu unterdrücken, zu Boxen / Unboxing-Operationen
- Besetzung zu unterdrücken Warnungen bezüglich Operationen zu werfen
- dep-ann , um Warnungen zu unterdrücken in Bezug auf veraltete Anmerkung
- deprecation zu unterdrücken Warnungen in Bezug auf deprecation
- fallthrough Warnungen in Bezug auf fehlende Pausen in Schalter zur Unterdrückung Aussagen
- schließlich Warnungen zu unterdrücken, relativ zu finally-Block, die nicht tun Rückkehr
- versteckt , um Warnungen zu unterdrücken im Verhältnis zu den Einheimischen, die Variable
verstecken- unvollständig-Schalter , um Warnungen in Bezug auf fehlende Einträge unterdrücken in einer switch-Anweisung (Enum Fall)
- nls , um Warnungen zu unterdrücken im Vergleich zu nicht-nls Stringliterale
- null zu unterdrücken Warnungen bezüglich Analyse auf null
- Einschränkung , um Warnungen unterdrücken relativ zur Verwendung von entmutigten oder verbotene Referenzen
- seriell Warnungen zu unterdrücken, in Bezug auf fehlende serialVersionUID Feld für eine serializable Klasse
- statisch-Zugriff , um Warnungen in Bezug auf eine falsche statische unterdrücken Zugang
- synthetischer Zugang Warnungen nicht optimiert relativ zu unterdrücken Zugang von inneren Klassen
- nicht aktiviert , um Warnungen in Bezug auf unkontrollierte Operationen unterdrücken
- unqualifizierte-Feldzugriff Warnungen Feld relativ zu unterdrücken Zugang unqualifizierte
- nicht verwendet , um Warnungen in Bezug auf nicht verwendeten Code unterdrücken
Liste für Indigo fügt hinzu:
- javadoc , um Warnungen unterdrücken relativ zu javadoc Warnungen
- rawtypes , um Warnungen unterdrücken relativ zur Verwendung von rohen Typen
- static-Methode , um Warnungen in Bezug auf Methoden unterdrücken, die als statisch
deklariert werden könnten- Super zu unterdrücken Warnungen bezüglich eines Verfahrens ohne Super Anrufungen zu überschreiben
Liste für Juno fügt hinzu:
- Ressource Warnungen Nutzung von Ressourcen des Typs Verschließbare
relativ zu unterdrücken- sync-Überschreibung Warnungen zu unterdrücken, aufgrund fehlender synchronisieren, wenn eine synchronisierte Methode
zwingenden
Kepler und Luna verwenden die gleiche Token-Liste als Juno ( Liste ).
Andere werden ähnlich, aber unterschiedlich sein.
Andere Tipps
Alle Werte sind zulässig (nicht erkannte diejenigen, werden ignoriert). Die Liste der anerkannten Vereinen ist Compiler spezifisch.
Das unchecked
und deprecation
Java Tutorials aufgelistet sind als die beiden Warnungen von The Language Specification Java erforderlich, daher sollten sie mit allen Compilern gültig:
Jede Compiler-Warnung gehört zu einer Kategorie. Die Java Language Specification listet zwei Kategorien:. Deprecation und ungeprüft
Die spezifischen Abschnitte innerhalb Die Java Language Specification wo sie definiert sind, nicht konsistent über Versionen . In der Java SE 8 Spezifikation unchecked
und deprecation
als Compiler-Warnungen in den Abschnitten aufgelistet 9.6.4.5. @SuppressWarnings und 9.6.4.6 @deprecated sind.
Für Sun-Compiler, javac -X
läuft gibt eine Liste aller von dieser Version erkannten Werte. Für 1.5.0_17, erscheint die Liste zu sein:
- alle
- deprecation
- ungeprüft
- fallthrough
- Pfad
- seriell
- schließlich
Die Liste ist Compiler spezifisch. Aber hier werden die Werte in Eclipse-:
- allDeprecation deprecation sogar in veralteten Code
- allJavadoc ungültige oder fehlende javadoc
- assertIdentifier Auftreten von assert als Kennung verwendet
- Boxen Autoboxing Umwandlung
- charConcat , wenn ein char Array in einer String-Verkettung verwendet wird, ohne in eine Zeichenfolge konvertiert wird explizit
- conditionAssign möglich versehentliche boolean Zuordnung
- constructorName Verfahren mit Konstruktor Name
- dep-ann fehlt @deprecated Anmerkung
- deprecation Verwendung von veralteten Typ oder Member außerhalb veraltet Code
- entmutigt Verwendung von Typen eine entmutigte Zugriffsregel
passend- emptyBlock undokumentiert leerer Block
- enumSwitch , unvollständig-Schalter unvollständig Enum Schalter
- fallthrough möglich fallthrough Fall
- fieldHiding Feld versteckt eine weitere Variable
- finalBound Typparameter mit der endgültigen Grenze
- schließlich schließlich nicht blockieren Abschluss normalerweise
- verboten Verwendung von Arten eine verbotene Zugriffsregel
passend- versteckt Makro für fieldHiding, localHiding, typeHiding und maskedCatchBlock
- indirectStatic indirekten Verweisen auf statische Member
- intfAnnotation Annotationstyp als Super-Schnittstelle
- intfNonInherited Schnittstelle nicht-geerbte Methode Kompatibilität
- javadoc ungültig javadoc
- localHiding lokale Variable eine andere Variable
versteckt- maskedCatchBlocks versteckt catch-Block
- nls Nicht-nls Stringliterale (fehlende Tags // $ NON-NLS)
- noEffectAssign Zuordnung ohne Effekt
- null Potential fehlende oder redundante null Prüfung
- nullDereference fehlt null Prüfung
- Über ann fehlt @Override Anmerkung
- paramAssign Zuordnung zu einem Parameter
- pkgDefaultMethod Versuch Paket-Standardmethode
außer Kraft setzen- raw Nutzung einer rohen Art (anstelle einem parametrisierte Typ)
- Semikolon unnötiges Semikolon oder leere Anweisung
- seriell fehlt serialVersionUID
- specialParamHiding Konstruktor oder Setter Parameter versteckt ein anderes Feld
- statisch-Zugriff Makro für indirectStatic und staticReceiver
- staticReceiver , wenn ein nicht statisch Empfänger verwendet, um ein statisches Feld zu erhalten oder eine statische Methode aufrufen
- Super Überschreiben einer Methode ohne einen Super Aufruf zu machen
- Unterdrückungs aktivieren @SuppressWarnings
- syntheticAccess, synthetischen Zugang , wenn für Innerclass synthetischen Zugang Durchführung
- Aufgaben aktivieren Sie die Unterstützung für Aufgaben-Tags im Quellcode
- typeHiding Typparameter eine andere Art
versteckt- nicht aktiviert nicht markiert Typ Betrieb
- unnecessaryElse unnötige else-Klausel
- unqualifizierte-Feldzugriff, unqualifiedField unqualifizierte Verweis auf das Feld
- nicht verwendete Makro für unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate und unusedThrown
- unusedArgument nicht verwendete Methode Argument
- unusedImport nicht verwendeter Import Referenz
- unusedLabel nicht verwendetes Label
- unusedLocal nicht verwendete lokale Variablen
- unusedPrivate nicht verwendete private Elementdeklaration
- unusedThrown ungenutzt erklärt geworfen Ausnahme
- uselessTypeCheck unnötiger Guss / Instanceof Betrieb
- varargsCast varargs Argument explizite Umwandlung benötigt
- warningToken unhandled Warn Token in @SuppressWarnings
Sun JDK (1.6) hat eine kürzere Liste der unterstützten Warnungen:
- deprecation Überprüfen Sie für die Verwendung von abgeschriebenen Artikel.
- nicht aktiviert Geben Sie mehr Details für unkontrollierte Umwandlung Warnungen, die von der Java Language Specification beauftragt werden.
- seriell Warn serialVersionUID Definitionen auf serializable Klassen über fehlt.
- schließlich über schließlich Klauseln warnen, die normalerweise nicht abschließen können.
- fallthrough Überprüfen Schalterblocks für Durchfall Fälle und eine Warnmeldung für jeden zur Verfügung stellen, die gefunden werden.
- Pfad Überprüfen Sie für einen nicht vorhandenen Pfad in Umgebung Wege (wie Classpath).
Die neueste verfügbare javac (1.6.0_13) für Mac hat die folgenden unterstützten Warnungen
- alle
- Besetzung
- deprecation
- divzero
- leer
- nicht aktiviert
- fallthrough
- Pfad
- seriell
- schließlich
- Überschreibungen
Ein neuer Favorit für mich ist in IntelliJ @SuppressWarnings("WeakerAccess")
, die sie von beschweren hält, wenn er denkt, sollten Sie einen schwächeren Zugriffsmodifikator haben, als Sie verwenden. Wir haben den Zugang der Öffentlichkeit haben, für einige Testmethoden zu unterstützen und die @VisibleForTesting
Anmerkung nicht daran hindert, die Warnungen.
ETA: „Anonymous“, kommentierte auf der Seite verknüpft @MattCampbell, die folgenden unglaublich nützlich Anmerkung:
Sie sollten nicht diese Liste müssen für den Zweck verwenden Sie beschreibt. IntelliJ werden diese SuppressWarnings für Sie hinzufügen automatisch, wenn Sie bitten, es zu. Es ist seit der Lage, dies zu tun so viele Veröffentlichungen zurück, wie ich mich erinnere.
Gehen Sie einfach auf die Stelle, wo Sie die Warnung und geben Sie haben Alt-Eingabe (Oder wählen Sie ihn in der Liste Inspektionen, wenn Sie es dort sehen). Wann kommt das Menü, um die Warnung zeigt, und bietet es zu beheben für Sie (zum Beispiel, wenn die Warnung dann „macht statisch“ „Methode kann statisch sein“ Angebot ist IntellJ ist es für Sie zu beheben), anstatt „eingeben“ auszuwählen, benutzen Sie einfach den Pfeil nach rechts, um das Untermenü zu gelangen, die haben Optionen wie „Bearbeiten Inspektionsprofileinstellung“ und so weiter. Bei der Ende der Liste werden Optionen wie „alle Inspektionen Unterdrückt für Klasse“,‚Suppress für die Klasse‘,‚Suppress für die Methode‘und gelegentlich „Unterdrückt für Anweisung“. Sie wollen wahrscheinlich je nachdem, welche von ihnen erscheint auf der Liste zuletzt. Die Auswahl eines dieser fügt ein @SuppressWarnings Anmerkung (oder Kommentar in einigen Fällen), um Ihren Code die Warnung in Frage zu unterdrücken. Sie werden nicht an dem erraten müssen Anmerkung hinzuzufügen, weil IntelliJ auf die Warnung basiert wählen Sie ausgewählt haben.
Und das scheint eine viel vollständigere Liste zu sein, wo ich einige Warnungen speziell für Android-Studio gefunden, dass ich nicht an anderer Stelle finden konnte (z SynchronizeOnNonFinalField)
https://jazzy.id.au/2008/10/30/ list_of_suppresswarnings_arguments.html
Oh, jetzt SO Richtlinien contraddict-SO Einschränkungen. die Liste kopieren, statt sie als nur den Link auf der einen Seite, ich soll. Aber auf der anderen Seite, würde dies die maximal zulässige Anzahl von Zeichen nicht überschreiten. So hoffen wir, dass nur die Verbindung nicht brechen wird.
JSL 1.7
der Oracle-Dokumentation erwähnt:
-
unchecked
: Ungeprüfter Warnungen durch die Zeichenfolge „ungeprüft“ identifiziert werden. -
deprecation
: Ein Java-Compiler muss eine deprecation Warnung erzeugen, wenn ein Typ, Verfahren, Feld oder Konstruktor, deren Deklaration mit dem Vermerk kommentiert @deprecated verwendet wird (dh außer Kraft gesetzt, aufgerufen wird, oder namentlich erwähnt), es sei denn: [. ..] die Verwendung ist innerhalb eines Unternehmens, das die Warnung mit der Anmerkung @SuppressWarnings ( „deprecation“) zu unterdrücken bezeichnet ist; oder
Es erklärt dann, dass Implementierungen hinzufügen und dokumentieren ihre eigene:
Compiler-Anbieter sollten die Warnung Namen dokumentieren sie in Verbindung mit dieser Anmerkung Typ unterstützen. Anbieter werden aufgefordert, zusammenzuarbeiten, um sicherzustellen, dass die gleichen Namen für mehrere Compiler arbeiten.
Ich möchte nur hinzufügen, dass es eine Master-Liste von IntelliJ unterdrücken Parameter an: https: // gist.github.com/vegaasen/157fbc6dce8545b7f12c
Es sieht ziemlich umfassend. 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
Ich habe bemerkt, dass //noinspection
in sein auto-generierte IntelliJ
- sicherstellen, dass Sie nicht bereits ein Plan
@SuppressWarninigs
vor der Anweisung - Sie können nun automatisch generieren, die spezifische
//noinspection
mit Alt + Enter , wenn Sie die Warnung und dann die Pfeil-Rechts-Taste ausgewählt haben, , um zu sehen die Unterdrückt für ... Option
hier gelandet, als ich ein „Schalter hat zu wenig Fall Etiketten“ zu unterdrücken wollte von IntelliJ warnen. Ich habe nicht eine komplette Liste für IntelliJ der @SuppressWarning
Unterstützung finden, aber //noinspection
hat den Trick für mich.
Wenn Sie SonarLint verwenden, versuchen, über die Methode oder Klasse die ganze Tintenfisch string: @SuppressWarnings ( "Tintenfisch: S1172")