Quelle est la liste des @SuppressWarnings
noms d'avertissement valides en Java?
Le bit qui vient entre le ("")
dans @SuppressWarnings("")
.
java
eclipse
warnings
compiler-warnings
suppress-warnings
Ron Tuffin
la source
la source
"ProhibitedExceptionDeclared"
dans Eclipse Collections Framework (org.eclipse.collections.impl.block.function.checked.ThrowingFunction
), et ce n'est pas répertorié ci-dessous.Réponses:
Cela dépend de votre IDE ou de votre compilateur.
Voici une liste pour Eclipse Galileo:
Liste pour Indigo ajoute:
La liste de Juno ajoute:
Kepler et Luna utilisent la même liste de jetons que Juno ( liste ).
D'autres seront similaires mais varient.
la source
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
. Certains environnements (par exemple NetBeans 7.3 avec JDK Java 6 [1.6.0_41]) seront générés"o possibly null"
à l'o.toString()
appel même s'ilso
ne peuvent pas être nuls à ce stade.semicolon
ne semble pas fonctionner dans luna? :( Quelqu'un peut-il vérifier si ellesemicolon
est bien valide?Toutes les valeurs sont autorisées (les valeurs non reconnues sont ignorées). La liste des fichiers reconnus est spécifique au compilateur.
Dans les didacticiels Java
unchecked
etdeprecation
sont répertoriés comme les deux avertissements requis par la spécification du langage Java, ils doivent donc être valides avec tous les compilateurs:Les sections spécifiques de la spécification du langage Java où elles sont définies ne sont pas cohérentes d'une version à l'autre. Dans la spécification Java SE 8
unchecked
etdeprecation
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
javac -X
donne une liste de toutes les valeurs reconnues par cette version. Pour 1.5.0_17, la liste semble être:la source
La liste est spécifique au compilateur. Mais voici les valeurs prises en charge dans Eclipse :
Sun JDK (1.6) a une liste plus courte des avertissements pris en charge:
Les derniers javac disponibles (1.6.0_13) pour mac ont les avertissements pris en charge suivants
la source
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'@VisibleForTesting
annotation n'empêche pas les avertissements.ETA: "Anonymous" a commenté, sur la page @MattCampbell liée à, la note incroyablement utile suivante:
la source
J'ai remarqué que cela
//noinspection
peut être généré automatiquement dans IntelliJ@SuppressWarninigs
avant la déclaration//noinspection
en appuyant sur Alt + Entrée lorsque l'avertissement est sélectionné, puis utilisez la touche fléchée droite pour voir l' option Supprimer pour ...Je me suis retrouvé ici quand j'ai voulu supprimer un avertissement «Le commutateur a trop peu d'étiquettes de cas» d'IntelliJ. Je n'ai pas trouvé de liste complète pour le
@SuppressWarning
support d'IntelliJ mais//noinspection
j'ai fait l'affaire pour moi.la source
//noinspection SwitchStatementWithTooFewBranches
avant lesswitch
travaux aussi pour moi.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 ne fournir que le lien. Mais d'un autre côté, cela dépasserait le nombre maximum autorisé de caractères. Espérons donc que le lien ne se cassera pas.
la source
JSL 1.7
La documentation Oracle mentionne:
unchecked
: Les avertissements non vérifiés sont identifiés par la chaîne "non vérifié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 son nom), sauf si: [...] l'utilisation est au sein d'une entité qui est annotée pour supprimer l'avertissement avec l'annotation @SuppressWarnings ("obsolète"); ouIl explique ensuite que les implémentations peuvent ajouter et documenter les leurs:
la source
unchecked
c'est le seul approuvé par la norme; la section très suivante de celle que vous avez citée indique que les avertissements de dépréciation ne devraient pas être produits lorsque "L'utilisation est dans une entité qui est annotée pour supprimer l'avertissement avec l'annotation@SuppressWarnings("deprecation")
"Je veux juste ajouter qu'il existe une liste principale de paramètres de suppression IntelliJ sur: https://gist.github.com/vegaasen/157fbc6dce8545b7f12c
Il semble assez complet. Partiel:
la source
Si vous utilisez SonarLint, essayez au-dessus de la méthode ou classe toute la chaîne de squid: @SuppressWarnings ("squid: S1172")
la source