Question

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

Le bit qui vient entre le ("") dans @SuppressWarnings ("quot") .

Était-ce utile?

La solution

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 diffusion
  •   
  • dep-ann pour supprimer les avertissements relatifs aux annotations obsolètes
  •   
  • obsolète pour supprimer les avertissements relatifs à l'abandon
  •   
  • passerelle pour supprimer les avertissements relatifs aux ruptures de commutateur manquantes   déclarations
  •   
  • finalement pour supprimer les avertissements relatifs à bloquer définitivement cette information.   retourner
  •   
  • masquant pour supprimer les avertissements relatifs aux locaux masquant une variable
  •   
  • commutateur incomplet pour supprimer les avertissements relatifs aux entrées manquantes   dans une instruction switch (cas d'enum)
  •   
  • nls pour supprimer les avertissements relatifs aux littéraux de chaîne autres que nls
  •   
  • null pour supprimer les avertissements relatifs à l'analyse null
  •   
  • restriction pour supprimer les avertissements relatifs à l'utilisation de   références interdites
  •   
  • serial pour supprimer les avertissements relatifs à l'absence de serialVersionUID   champ pour une classe sérialisable
  •   
  • accès statique pour supprimer les avertissements relatifs aux erreurs statiques   accès
  •   
  • accès de synthèse pour supprimer les avertissements relatifs aux non optimisés   accès depuis les classes internes
  •   
  • décoché pour supprimer les avertissements relatifs aux opérations non contrôlées
  •   
  • accès de champ non qualifié pour supprimer les avertissements relatifs au champ   accès non qualifié
  •   
  • non utilisé pour supprimer les avertissements relatifs au code non utilisé
  •   

Liste pour Indigo ajoute:

  
      
  • javadoc pour supprimer les avertissements relatifs aux avertissements javadoc
  •   
  • types bruts pour supprimer les avertissements relatifs à l'utilisation de types bruts
  •   
  • méthode statique 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:

  
      
  • ressource 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 varieront.

Autres conseils

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

Dans Didacticiels Java décoché et désapprobation 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: obsolète et décochée.

Les sections spécifiques à l'intérieur des spécification du langage Java dans lesquelles elles sont définies ne sont pas cohérentes d'une version à l'autre. . Dans la spécification Java SE 8 décoché et obsolète sont répertoriés 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:

  • tous
  • dépréciation
  • décoché
  • échec
  • chemin
  • série
  • enfin

La liste est spécifique au compilateur. Mais voici les valeurs prises en charge dans Eclipse :

  
      
  • allDeprecation , même dans un code obsolète, obsolète
  •   
  • allJavadoc javadoc invalide ou manquant
  •   
  • assertIdentifier occurrence d'assert utilisée comme identifiant
  •   
  • boxing conversion de la sélection automatique
  •   
  • charConcat lorsqu'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 éventuelle
  •   
  • nom du constructeur avec   nom du constructeur
  •   
  • dep-ann @Deprecated manquant   annotation
  •   
  • obsolète utilisation de type ou de membre obsolète en dehors de code obsolète
  •   
  • déconseillé l'utilisation de types correspondant à une règle d'accès déconseillé
  •   
  • emptyBlock bloc vide non documenté
  •   
  • enumSwitch , commutateur incomplet commutateur enum incomplet
  •   
  • échec possible, échec
  •   
  • fieldHiding champ masquant une autre variable
  •   Paramètre de type
  • finalBound avec la liaison finale
  •   
  • enfin bloquer enfin ne pas se terminer normalement
  •   
  • interdit l'utilisation de types correspondant à une règle d'accès interdit
  •   
  • Masquage macro pour les champs fieldHiding, localHiding, typeHiding et maskedCatchBlock
  •   
  • indirectStatic référence indirecte à un membre statique
  •   
  • intfAnnotation type d'annotation utilisé en tant que super interface
  •   
  • intfNonInherited compatibilité des méthodes non héritées de l'interface
  •   
  • javadoc javadoc non valide
  •   
  • 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 contrôle nul manquant ou redondant potentiel
  •   
  • nullDereference contrôle de null manquant
  •   
  • over-ann Annotation @Override manquante
  •   
  • paramAssign : affectation à un paramètre
  •   
  • pkgDefaultMethod : tentative de substitution de la méthode package-default
  •   
  • raw utilisation de type brut (au lieu d'un type paramétré)
  •   
  • point-virgule point-virgule ou instruction vide inutile
  •   
  • série 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 écrasant une méthode sans effectuer de super invocation
  •   
  • supprimer activer @SuppressWarnings
  •   
  • synthétiqueAccess, accès synthétique lors de l'exécution d'un accès synthétique à la classe intérieure
  •   
  • tâches autorisent la prise en charge des balises de tâches dans le code source
  •   
  • typeHiding paramètre de type masquant un autre type
  •   
  • décoché : opération de type décochée
  •   
  • inutileElse clause inutile d'autre
  •   
  • unqualified-field-access, unqualifiedField non qualifié   référence au champ
  •   Macro
  • non utilisée pour les arguments non utilisés, importés, importés, les libellés non utilisés, les noms de contacts locaux, non utilisés, privés, privés et non utilisés,
  •   
  • argument inutilisé argument de méthode inutilisé
  •   
  • Importation non utilisée Référence d'importation non utilisée
  •   
  • label inutilisé label inutilisé
  •   
  • localLutilisé variable locale inutilisée
  •   
  • createdPrivate déclaration de membre privé inutilisée
  •   
  • UnnamedThrown Exception levée déclarée inutilisée
  •   
  • uselessTypeCheck opération de conversion / instance non nécessaire
  •   
  • varargsCast L'argument varargs doit être explicitement converti
  •   
  • warningToken : jeton d'avertissement non géré dans @SuppressWarnings
  •   

Le kit JDK de Sun (1.6) a une version plus courte de . liste des avertissements pris en charge:

  
      
  • dépréciation : vérifiez si vous utilisez des éléments amortis.
  •   
  • décoché : donnez plus de détails sur les avertissements de conversion non contrôlés prescrits par la spécification du langage Java.
  •   
  • serial : avertissez des définitions de serialVersionUID manquantes dans les classes sérialisables.
  •   
  • finally Avertir à propos des clauses qui ne peuvent pas se terminer normalement.
  •   
  • fallthrough : vérifiez si les blocs de commutateurs ne sont pas remplis et envoyez un message d'avertissement pour tous ceux qui ont été trouvés.
  •   
  • chemin d'accès : recherchez un chemin d'accès inexistant dans les chemins d'accès à l'environnement (tel que chemin de classe).
  •   

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

  
      
  • tous
  •   
  • cast
  •   
  • obsolète
  •   
  • divzero
  •   
  • vide
  •   
  • décoché
  •   
  • échec
  •   
  • chemin
  •   
  • série
  •   
  • enfin
  •   
  • remplace
  •   

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: " Anonyme " a commenté, sur la page liée à @MattCampbell, la note extrêmement 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 communiqués que je me souviens.

     

Allez simplement à l'emplacement où vous avez l'avertissement et tapez Alt-Entrée   (ou sélectionnez-le dans la liste Inspections si vous le voyez ici).   Lorsque le menu apparaît, affiche l’avertissement et vous propose de le corriger pour   vous (par exemple, si l’avertissement est "La méthode peut être statique", puis "créer de la statique").   IntellJ propose de le réparer pour vous), au lieu de sélectionner "entrer",   utilisez simplement le bouton flèche droite pour accéder au sous-menu, qui aura   des options telles que " Modifier le réglage du profil d'inspection " et ainsi de suite. Au   En bas de cette liste figurent des options telles que "Supprimer toutes les inspections pour   class "," Supprimer pour la classe "," Supprimer pour la méthode "et occasionnellement   "Supprimer pour instruction". Vous voulez probablement quel que soit l'un de ces   apparaît en dernier sur la liste. La sélection de l’un d’eux ajoutera un   Annotation @SuppressWarnings (ou 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é.

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'une part, je suis censé copier la liste plutôt que de fournir uniquement le lien. Par contre, cela dépasserait le nombre maximum de caractères autorisé. Espérons donc que le lien ne se brisera pas.

JSL 1.7

La documentation Oracle mentionne:

  • décoché : les avertissements non décochés sont identifiés par la chaîne "décochée".
  • deprecation : un compilateur Java doit générer un avertissement de dépréciation 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é, invoqué ou référencé par name), sauf si: [...] l'utilisation est 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 s’appliquent à plusieurs compilateurs.

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

Cela semble assez complet. Partielle:

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

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

.
  • assurez-vous de ne pas avoir déjà un plan @SuppressWarninigs avant la déclaration
  • Vous pouvez maintenant générer automatiquement le // noinspection spécifique en appuyant sur Alt + Entrée lorsque l'avertissement est sélectionné, puis utilisez la flèche vers la droite pour afficher l'option Supprimer pour ...

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top