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

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

le morceau qui vient entre le ("") dans @SuppressWarnings("") .

223
demandé sur user8 2009-07-30 15:25:34

7 réponses

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

Voici une liste pour Eclipse Galileo:

  • tous supprimer tous les Avertissements
  • boxe pour supprimer les avertissements relatifs à boxing/unboxing opérations
  • cast supprimer les Avertissements relatifs aux opérations de cast
  • dep-ann supprimer les Avertissements relatifs à l'annotation dépréciée
  • dépréciation supprimer les Avertissements relatifs à la dépréciation
  • fallthrough pour supprimer les avertissements relatifs manque de pauses dans le commutateur les déclarations
  • enfin supprimer les Avertissements relatifs à enfin bloquer ceux qui ne le font pas retourner
  • "151990920 de" cacher pour supprimer les avertissements relatifs à la population locale qui se cachent variable
  • incomplet-switch pour supprimer les avertissements relatifs à des entrées manquantes dans une instruction switch (enum cas)
  • nls pour supprimer les avertissements relatifs à la non-nls littéraux de chaîne
  • null supprimer les Avertissements relatifs à null "l'analyse de l'1519110920"
  • restriction pour supprimer les Avertissements relatifs à l'utilisation des références interdites
  • serial pour supprimer les Avertissements relatifs à la version manquante de la sérieuid champ pour une classe sérialisable
  • accès statique supprimer les Avertissements relatifs aux messages statiques incorrects accès
  • synthétique-accès pour supprimer les Avertissements relatifs à l'utilisation non optimale accès à partir des classes intérieures
  • non vérifié supprimer les Avertissements relatifs aux opérations non vérifiées
  • sans réserve sur le terrain de l'accès pour supprimer les avertissements relatifs à champ accès non qualifié
  • non utilisé supprimer les Avertissements relatifs au code non utilisé

Liste pour Indigo ajoute:

  • javadoc supprimer les Avertissements relatifs aux avertissements javadoc
  • rawtypes supprimer les Avertissements relatifs à l'utilisation des types crus
  • statique-méthode pour supprimer les avertissements relatifs à des méthodes qui pourrait être déclaré comme statique
  • super pour supprimer les avertissements relatifs à la redéfinition d'une méthode de super sans invocations

liste pour Juno ajoute:

  • ressource pour supprimer les avertissements relatifs à l'utilisation des ressources de type Fermer
  • Sync-override pour supprimer les avertissements en raison de: manquant synchroniser lors de la suppression d'une méthode synchronisée

Kepler et Luna utilisent la même Liste de tokens que Juno ( liste ).

d'Autres seront similaires, mais varient.

223
répondu cletus 2014-10-29 17:59:41

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

Dans La Java "Tutoriels 151990920" unchecked et deprecation sont répertoriés comme les deux avertissements requis par Le Langage Java Spécification, par conséquent, ils devraient être valable avec tous les compilateurs:

chaque avertissement de compilateur appartient à une catégorie. La spécification du langage Java contient deux catégories: dépréciation et non contrôlé.

les sections spécifiques à l'intérieur de la spécification Java Language où elles sont définies n'est pas cohérente entre les versions. Dans la spécification Java SE 8 unchecked et deprecation sont listés comme des avertissements de compilateur dans les sections 9.6.4.5. @SuppressWarnings et 9.6.4.6 @Deprecated , respectivement.

pour Sun's compilateur, l'exécution 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
  • non vérifié
  • fallthrough
  • chemin
  • série
  • enfin
46
répondu Martin McNulty 2016-09-29 01:25:52

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

  • allDeprecation désapprobation à l'intérieur même obsolète code
  • allJavadoc invalide ou manquant javadoc
  • assertIdentifier la présence d'affirmer utilisée comme identifiant
  • boxe l'autoboxing conversion
  • charConcat quand un tableau char est utilisé dans une concaténation de chaîne sans être converti explicitement en une chaîne
  • conditionAssign possible accidentelle boolean affectation
  • nom du constructeur méthode avec nom du constructeur
  • dep-ann manquant @Deprecated annotation
  • dépréciation utilisation du type ou du membre déprécié à l'extérieur du code
  • découragé utilisation de types correspondant à une règle d'accès découragée
  • emptyBlock sans-papiers bloc vide
  • enumSwitch , incomplet-commutateur interrupteur enum incomplet
  • fallthrough chute possible-par cas
  • fieldHiding champ cacher une autre variable
  • finalBound type de paramètre avec final lié
  • enfin enfin bloc ne remplissant pas normalement
  • interdit utilisation de types correspondant à une règle d'Accès interdit
  • se cacher macro for fieldHiding, localHiding, typeHiding and maskedCatchBlock
  • indirectement statique référence indirecte à un membre statique
  • intfAnnotation type d'annotation utilisé comme super interface
  • intfNonInherited compatibilité de l'interface avec une méthode non héréditaire
  • javadoc invalide javadoc
  • localisation variable locale masquant une autre variable
  • maskedCatchBlocks caché bloc catch
  • nls non-nls littéraux de chaîne (manque de balises //$NON-NLS-)
  • noEffectAssign "151980920 d'attribution" sans effet
  • null contrôle null potentiel manquant ou redondant
  • nullDereference missing null check
  • ann manquant @Override annotation
  • paramAssign assignation à un paramètre
  • pkgDefaultMethod tentative de remplacer paquet-méthode par défaut
  • raw usage a de type raw (au lieu d'un type paramétré)
  • point-virgule point-virgule inutile ou déclaration vide
  • série manquant serialVersionUID
  • specialParamHiding constructeur ou setter paramètre masquant un autre champ
  • accès statique macro pour livraison indirecte et statique
  • staticReceiver si un non statique récepteur est utilisée pour obtenir un champ statique ou appeler une méthode statique
  • super passer outre une méthode sans faire une super invocation
  • supprimer activer @SuppressWarnings
  • syntheticAccess, synthétique d'accès lors de l'exécution d'accès synthétique pour innerclass
  • tâches activer le support pour les tâches de balises dans le code source de
  • typeHiding type paramètre masquant un autre type
  • unchecked unchecked opération de type
  • unnessary else unnessary else clause
  • sans réserve sur le terrain de l'accès, unqualifiedField non qualifiés référence au champ
  • non-utilisé macro for inutilisedargument, inutilisedimport, inutilisedlabel, inutilisedlocal, inutilisedprivate and inutilisedthrown
  • argument de méthode inutilisé
  • importation inutilisée référence d'importation inutilisée
  • étiquette inutilisée étiquette inutilisée
  • local inutilisé variable locale inutilisée
  • inutilisés privés déclaration de membre privé non utilisé
  • inutilisedthrown unused declared thrown exception
  • uselessTypeCheck casting/instanceexécutive
  • varargsCast varargs argument besoin de cast explicite
  • warningToken non gérée avertissement jeton dans @SuppressWarnings

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

  • dépréciation contrôle de l'utilisation d'éléments amortis.
  • unchecked donne plus de détails sur les avertissements de conversion non vérifiés qui sont prescrits par la spécification Java Language.
  • série Attention sur le manque de serialVersionUID les définitions des classes sérialisables.
  • enfin mettre en garde contre les clauses enfin que ne peut pas terminer normalement.
  • fallthrough vérifier les blocs d'interrupteurs pour les cas de défaillance et fournir un message d'avertissement pour ceux qui sont trouvés.
  • chemin vérifier s'il existe un chemin inexistant dans les chemins d'environnement (tels que classpath).

le dernier javac disponible (1.6.0_13) pour mac ont les avertissements suivants pris en charge

  • tous
  • cast
  • dépréciation
  • divzero
  • vide
  • non vérifié
  • fallthrough
  • chemin
  • série
  • enfin
  • remplace
36
répondu D. Wroblewski 2009-07-30 12:20:37

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

4
répondu barclay 2018-03-22 21:33:31

et cela semble être une liste beaucoup plus complète, où j'ai trouvé quelques 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 vont à l'encontre des restrictions. D'une part, je suis censé copie de la liste plutôt que de fournir seulement le lien. Mais d'un autre côté, cette dépasser le nombre maximal de caractères. Espérons que le lien ne se brisera pas.

1
répondu matteo 2014-10-11 17:26:31

JSL 1.7

La documentation d'Oracle mentionne:

  • unchecked : les Avertissements non contrôlés sont identifiés par la chaîne de caractères "unchecked".
  • deprecation : un compilateur Java doit produire 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 qu'il est écrasé, invoqué, ou référencé par son nom), à moins que: [...] L'utilisation fait partie d'une entité annotée pour supprimer l'avertissement avec l'annotation @SuppressWarnings("dépréciation"); ou

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

Les fournisseurs de compilateurs

doivent documenter les noms d'avertissement qu'ils supportent en conjonction avec ce type d'annotation. Les fournisseurs sont encouragés à coopérer pour s'assurer que les mêmes noms fonctionnent à travers plusieurs compilateurs.

1

je veux juste ajouter qu'il y a une liste maître de IntelliJ supprimer les paramètres à: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c

Ça a l'air 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
1
répondu Matt Campbell 2017-12-20 16:44:20