web-dev-qa-db-fra.com

Quelle est la liste des noms d'avertissement valides @SuppressWarnings en Java?

Quelle est la liste des noms d'avertissement @SuppressWarnings valides en Java?

Le bit qui se situe entre le ("") dans @SuppressWarnings("").

238
Ron Tuffin

Cela dépend de votre IDE ou de votre compilateur.

Voici une liste pour Eclipse Galileo:

  • all pour supprimer tous les avertissements
  • boxing pour supprimer les avertissements relatifs aux opérations de boxing/unboxing
  • cast pour supprimer les avertissements relatifs aux opérations de transtypage
  • dep-ann pour supprimer les avertissements relatifs aux annotations obsolètes
  • deprecation pour supprimer les avertissements relatifs à la dépréciation
  • fallthrough pour supprimer les avertissements relatifs aux interruptions manquantes dans l'interrupteur des déclarations
  • finally pour supprimer les avertissements relatifs au blocage final revenir
  • masquer pour supprimer les avertissements relatifs aux variables locales masquant une variable
  • incomplet-switch pour supprimer les avertissements relatifs aux entrées manquantes dans une instruction switch (cas enum)
  • nls pour supprimer les avertissements relatifs aux littéraux de chaîne non nls
  • null pour supprimer les avertissements relatifs à l'analyse null
  • restriction pour supprimer les avertissements relatifs à l'utilisation de déconseillé ou références interdites
  • serial pour supprimer les avertissements relatifs à l'absence de serialVersionUID champ pour une classe sérialisable
  • static-access pour supprimer les avertissements relatifs aux erreurs statiques incorrectes accès
  • synthétique-access pour supprimer les avertissements relatifs à non optimisé accès depuis les classes intérieures
  • unchecked pour supprimer les avertissements relatifs aux opérations non contrôlées
  • unqualified-field-access pour supprimer les avertissements relatifs au champ accès non qualifié
  • used pour supprimer les avertissements relatifs au code inutilisé

Liste pour Indigo ajoute:

  • javadoc pour supprimer les avertissements relatifs aux avertissements javadoc
  • rawtypes pour supprimer les avertissements relatifs à l'utilisation de types bruts
  • static-method pour supprimer les avertissements relatifs aux méthodes pouvant être déclarées comme statiques
  • super pour supprimer les avertissements relatifs au remplacement d'une méthode sans super invocations

Liste pour Juno ajoute:

  • resource pour supprimer les avertissements relatifs à l'utilisation de ressources de type Fermable
  • sync-override pour supprimer les avertissements en raison d'une synchronisation manquante lors du remplacement d'une méthode synchronisée

Kepler et Luna utilisent la même liste de jetons que Juno ( list ).

D'autres seront similaires mais varient.

231
cletus

Toutes les valeurs sont autorisées (les non reconnues sont ignorées). La liste de ceux reconnus est spécifique au compilateur. 

Dans Les didacticiels Javaunchecked et deprecation sont répertoriés comme les deux avertissements requis par la spécification de langage Java. Ils doivent donc être valides avec tous les compilateurs:

Chaque avertissement du compilateur appartient à une catégorie. La spécification du langage Java répertorie deux catégories: dépréciée et non cochée.

Les sections spécifiques à l'intérieur de La spécification de langage Java où elles sont définies n'est pas cohérente d'une version à l'autre. Dans la spécification Java SE 8, les variables unchecked et deprecation sont répertoriées comme avertissements du compilateur dans les sections 9.6.4.5. @SuppressWarnings et 9.6.4.6 @Deprecated, respectivement.

Pour le compilateur de Sun, l'exécution de javac -X donne une liste de toutes les valeurs reconnues par cette version. Pour 1.5.0_17, la liste semble être:

  • tout
  • désapprobation
  • décoché
  • tomber dans
  • chemin
  • en série
  • enfin
47
Martin McNulty

La liste est spécifique au compilateur. Mais voici les valeurs supportées dans Eclipse :

  • allDeprecation obsolète même dans du code obsolète 
  • allJavadoc javadoc invalide ou manquant 
  • assertIdentifier occurrence d'assert utilisée comme identifiant 
  • boxing conversion automatique 
  • charConcat quand un tableau de caractères est utilisé dans une concaténation de chaîne sans être converti explicitement en chaîne 
  • conditionAssign affectation booléenne accidentelle possible 
  • constructorName avec nom du constructeur 
  • dep-ann manquant @Deprecated annotation 
  • deprecation utilisation de type ou de membre obsolète en dehors de code obsolète 
  • découragé utilisation de types correspondant à une règle d'accès déconseillé 
  • emptyBlock bloc vide non documenté 
  • enumSwitch, incomplet-switch commutateur d'énumération incomplète 
  • fallthrough possibilité de chute 
  • fieldHiding champ masquant une autre variable 
  • Paramètre de type finalBound avec la borne finale 
  • finally bloquer finalement ne pas se terminer normalement 
  • allowed utilisation de types correspondant à une règle d'accès interdit 
  • Macro hiding pour fieldHiding, localHiding, typeHiding et maskedCatchBlock 
  • indirectStatic référence indirecte à un membre statique 
  • Type d'annotation intfAnnotation utilisé comme super interface 
  • intfNonInherited compatibilité de méthode avec les méthodes non héritées 
  • javadoc javadoc invalide 
  • localHiding variable locale masquant une autre variable 
  • maskedCatchBlocks bloc de capture caché 
  • nls littéraux de chaîne non nls (sans balises // $ NON-NLS-) 
  • noEffectAssign affectation sans effet 
  • null vérification de nullité potentielle manquante ou redondante 
  • nullDereference manquant vérification de null 
  • over-ann Annotation @Override manquante 
  • paramAssign assignation à un paramètre 
  • pkgDefaultMethod tente de remplacer la méthode package-default 
  • raw usage a de type brut (au lieu d'un type paramétré) 
  • point-virgule point-virgule inutile ou instruction vide 
  • serial serialVersionUID manquant 
  • specialParamHiding constructeur ou paramètre de définition masquant un autre champ 
  • Macro static-access pour indirectStatic et staticReceiver 
  • staticReceiver si un récepteur non statique est utilisé pour obtenir un champ statique ou appeler une méthode statique 
  • super surcharger une méthode sans faire de super invocation 
  • suppress enable @SuppressWarnings 
  • synthétiqueAccess, accès synthétique lors de l'exécution d'un accès synthétique pour innerclass 
  • tasks active la prise en charge des balises de tâches dans le code source 
  • paramètre de type typeHiding masquant un autre type 
  • unchecked opération de type non contrôlée 
  • inutileElse clause else else 
  • unqualified-field-access, unqualifiedField non qualifié référence au champ 
  • macro non utilisée pour l'argument non utilisé, importé, importé, le label non utilisé, le local non utilisé, localPrivé et non utilisé par le bas 
  • UnnamedArgument Argument de la méthode inutilisée 
  • namedImport référence d'importation inutilisée 
  • étiquette inutilisée étiquette inutilisée 
  • inutiliséLocal variable locale inutilisée 
  • namedPrivate déclaration de membre privé inutilisé 
  • exceptionThrown exception levée déclarée inutilisée 
  • uselessTypeCheck distribution/instance non nécessaire 
  • varargsCast L'argument de varargs nécessite une conversion explicite 
  • warningToken jeton d'avertissement non géré dans @SuppressWarnings 

Sun JDK (1.6) a une liste des avertissements pris en charge plus courte:

  • deprecation Vérifie l'utilisation des éléments amortis. 
  • unchecked Donne plus de détails sur les avertissements de conversion non contrôlés imposés par la spécification du langage Java. 
  • serial Avertit de l'absence de définitions serialVersionUID sur les classes sérialisables. 
  • finally Avertir à propos de la fin des clauses qui ne peuvent pas se terminer normalement. 
  • fallthrough Recherchez les éventuelles défaillances dans les blocs de commutateurs et fournissez un message d'avertissement pour ceux détectés. 
  • path Recherchez un chemin inexistant dans les chemins d'environnement (tel que classpath). 

Les derniers javac disponibles (1.6.0_13) pour mac ont les avertissements suivants pris en charge

  • tout 
  • cast 
  • dépréciation 
  • divzero 
  • vide 
  • décoché 
  • tomber dans 
  • chemin 
  • serial 
  • enfin 
  • remplace 
41
D. Wroblewski

Un nouveau favori pour moi est @SuppressWarnings("WeakerAccess") dans IntelliJ, ce qui l’empêche de se plaindre quand il pense que vous devriez avoir un modificateur d’accès plus faible que celui que vous utilisez. Nous devons avoir un accès public à certaines méthodes pour prendre en charge les tests, et l'annotation @VisibleForTesting n'empêche pas les avertissements.

ETA: "Anonymous" a commenté, sur la page liée à @MattCampbell, la note incroyablement utile suivante:

Vous ne devriez pas avoir besoin d'utiliser cette liste pour le but que vous êtes décrivant. IntelliJ ajoutera ces SuppressWarnings pour vous automatiquement si vous le lui demandez. Il a été capable de le faire pour autant de rejets que je me souvienne.

Il suffit d’aller à l’emplacement où vous avez l’avertissement et de taper Alt-Entrée (ou sélectionnez-le dans la liste des inspections si vous le voyez ici) . Lorsque le menu s'affiche, affiche l'avertissement et vous propose de le corriger pour vous (par exemple, si l'avertissement est "La méthode peut être statique", "Make statique" propose à IntellJ de le résoudre pour vous), au lieu de sélectionner "entrer", utilisez simplement le bouton fléché vers la droite pour accéder au sous-menu, qui aura des options telles que "Modifier le réglage du profil d'inspection", etc. Au En bas de cette liste figurent des options telles que "Supprimer toutes les inspections pour classe", "Supprimer pour la classe", "Supprimer pour la méthode" et, occasionnellement, pour "Supprimer pour la déclaration". Vous voulez probablement n'importe lequel d'entre eux apparaît en dernier sur la liste. La sélection de l'un d'eux ajoutera un L'annotation @SuppressWarnings (ou un commentaire dans certains cas) à votre code supprimer l'avertissement en question. Vous n'aurez pas besoin de deviner à quoi annotation à ajouter, car IntelliJ choisira en fonction de l’avertissement vous avez sélectionné.

5
barclay

JSL 1.7

La documentation Oracle mentionne:

  • unchecked: Les avertissements non contrôlés sont identifiés par la chaîne "non cochée". 
  • deprecation: un compilateur Java doit générer un avertissement de désapprobation lorsqu'un type, une méthode, un champ ou un constructeur dont la déclaration est annotée avec l'annotation @Deprecated est utilisé (c'est-à-dire, remplacé, appelé ou référencé par nom), sauf si: L'utilisation se trouve dans une entité annotée pour supprimer l'avertissement avec l'annotation @SuppressWarnings ("deprecation"); ou

Il explique ensuite que les implémentations peuvent ajouter et documenter leurs propres:

Les fournisseurs de compilateur doivent documenter les noms d'avertissement pris en charge conjointement avec ce type d'annotation. Les fournisseurs sont encouragés à coopérer pour faire en sorte que les mêmes noms fonctionnent avec plusieurs compilateurs.

Je veux juste ajouter qu'il existe une liste principale de paramètres de suppression IntelliJ à l'adresse: https://Gist.github.com/vegaasen/157fbc6dce8545b7f12c

Cela semble assez complet. Partiel:

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

Et cela semble être une liste beaucoup plus complète, où j'ai trouvé des avertissements spécifiques à Android-Studio que je ne pouvais pas trouver ailleurs (par exemple, SynchronizeOnNonFinalField).

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

Oh, maintenant les directives de SO contredisent les restrictions de SO… D'un côté, je suis censé copier la liste plutôt que de fournir uniquement le lien… mais d'autre part, cela dépasserait le nombre maximum de caractères autorisé. Espérons donc que le lien ne sera pas rompu.

1
matteo

J'ai remarqué que //noinspection peut être généré automatiquement dans IntelliJ

  • assurez-vous que vous n'avez pas déjà un plan @SuppressWarninigs avant l'instruction
  • Maintenant, vous pouvez générer automatiquement le //noinspection spécifique en appuyant sur Alt + Entrée lorsque l'avertissement est sélectionné, puis utilisez la touche flèche droite pour voir l'option Supprimer pour ...

Je me suis retrouvé ici quand je voulais supprimer un avertissement "commutateur a trop d'étiquettes de cas" d'avertissement d'IntelliJ Je n'ai pas trouvé de liste complète pour le support @SuppressWarning de IntelliJ, mais //noinspection a fait l'affaire pour moi.

0
hb0

Si vous utilisez SonarLint, essayez ci-dessus la méthode ou la classe de la chaîne entière du calmar: @SuppressWarnings ("squid: S1172").

0
R Strauss