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

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

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

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

    Voici une liste pour Eclipse Galileo:

    • tout pour supprimer tous les avertissements
    • boxe pour supprimer les avertissements relatifs aux opérations de boxe / unboxing
    • cast pour supprimer les avertissements relatifs aux opérations de transtypage
    • dep-ann pour supprimer les avertissements relatifs aux annotations obsolètes
    • dépréciation pour supprimer les avertissements relatifs à la dépréciation
    • réduire les avertissements relatifs aux pauses manquantes dans les instructions de commutateur
    • enfin pour supprimer les avertissements relatifs au blocage final qui ne retourne pas
    • se cacher pour supprimer les avertissements relatifs aux sections locales qui masquent la variable
    • commutateur incomplet pour supprimer les avertissements relatifs aux entrées manquantes dans une instruction de commutateur (cas d’énumération)
    • nls pour supprimer les avertissements relatifs aux littéraux de chaîne non-nls
    • null pour supprimer les avertissements relatifs à une parsing null
    • ressortingction pour supprimer les avertissements relatifs à l’utilisation de références découragées ou interdites
    • série pour supprimer les avertissements relatifs au champ serialVersionUID manquant pour une classe sérialisable
    • static-access pour supprimer les avertissements relatifs à un access statique incorrect
    • access synthétique pour supprimer les avertissements relatifs à l’access non optimisé des classes internes
    • non cochée pour supprimer les avertissements relatifs aux opérations non contrôlées
    • access aux champs non qualifiés pour supprimer les avertissements relatifs à l’access aux champs sans réserve
    • inutilisé pour supprimer les avertissements relatifs au code non utilisé

    List for Indigo ajoute:

    • javadoc pour supprimer les avertissements relatifs aux avertissements javadoc
    • rawtypes pour supprimer les avertissements relatifs à l’utilisation des types bruts
    • Méthode statique pour supprimer les avertissements relatifs aux méthodes pouvant être déclarées statiques
    • super pour supprimer les avertissements relatifs à la substitution d’une méthode sans super invocations

    List for Juno ajoute:

    • ressource pour supprimer les avertissements relatifs à l’utilisation des ressources de type Closeable
    • 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 ( liste ).

    D’autres seront similaires mais varieront.

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

    Dans Les tutoriels Java unchecked et deprecation sont listés comme les deux avertissements requirejs par la spécification du langage Java, ils doivent donc être valides avec tous les compilateurs:

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

    Les sections spécifiques de la spécification de langage Java où elles sont définies ne sont pas cohérentes entre les versions. Dans la spécification Java SE 8, les cases à cocher et unchecked 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 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

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

    • dépréciation de allDeprecation même à l’intérieur du code obsolète
    • javadoc invalide ou manquant allJavadoc
    • assertIdentifier occurrence de assert utilisé comme identifiant
    • conversion automatique de boxe
    • charConcat lorsqu’un tableau de caractères est utilisé dans une concaténation de chaîne sans être converti explicitement en une chaîne
    • conditionAssigner une éventuelle affectation booléenne accidentelle
    • méthode constructorName avec le nom du constructeur
    • dep-ann manquant l’annotation @Deprecated
    • dépréciation utilisation de type obsolète ou membre en dehors du code obsolète
    • utilisation découragée de types correspondant à une règle d’access déconseillée
    • bloc vide videBlock sans papiers
    • enumSwitch , commutateur incomplet d’énumération à commutateur incomplet
    • cas de chute possible
    • fieldHiding field masquant une autre variable
    • Paramètre de type finalBound avec limite finale
    • enfin enfin bloquer ne pas terminer normalement
    • utilisation interdite de types correspondant à une règle d’access interdite
    • masquage de macro pour fieldHiding, localHiding, typeHiding et maskedCatchBlock
    • Référence indirecte statique à un membre statique
    • Type d’ annotation intfAnnotation utilisé comme super interface
    • intfNonInherited interface compatibilité des méthodes non héritées
    • javadoc invalide javadoc
    • localHiding variable locale cachant une autre variable
    • maskedCatchBlocks bloc de capture caché
    • nls chaînes de caractères non-nls (sans balises // $ NON-NLS-)
    • Affectation noEffectAssign sans effet
    • null potentiel manquant ou contrôle de redondance nul
    • nullDereference manquant la vérification de null
    • annotation @Override manquante par annulation
    • ParamAssign affectation à un paramètre
    • pkgDefaultMethod tente de remplacer la méthode par défaut du package
    • utilisation brute de type brut (au lieu d’un type paramétré)
    • point- virgule ou point- virgule inutile
    • serialVersionUID manquant en série
    • SpecialParamHiding constructeur ou paramètre setter masquant un autre champ
    • macro d’ access statique pour indirectStatic et staticReceiver
    • staticReceiver si un récepteur non statique est utilisé pour obtenir un champ statique ou appeler une méthode statique
    • superposer une méthode sans faire une super invocation
    • supprimer l’ activation @SuppressWarnings
    • plasticAccess, access synthétique lors de l’exécution d’un access synthétique pour les classes internes
    • les tâches permettent la prise en charge des balises de tâches dans le code source
    • paramètre paramètre typeHiding masquant un autre type
    • opération non vérifiée de type non contrôlé
    • Clause inutile inutile
    • access non qualifié au champ, référence non qualifiée du champ à un champ
    • Macro inutilisée pour UsedArgument, UtilisationImscope, Utilisé inutilisé, InutiliséLocal, InutiliséPrivate et InutiliséWall
    • Argument de méthode non utilisé
    • inutiliséImporter la référence d’importation non utilisée
    • Etiquette inutilisée
    • Variable locale inutilisée
    • Déclaration de membre privé non utilisée
    • Exception déclarée non utilisée
    • uselessTypeCheck opération de cast / instance inutile
    • L’ argument varargsCast varargs nécessite une conversion explicite
    • warningToken jeton d’avertissement non géré dans @SuppressWarnings

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

    • désapprobation Vérifiez l’utilisation des éléments amortis.
    • décochée Donne plus de détails sur les avertissements de conversion non vérifiés qui sont obligatoires par la spécification de langage Java.
    • serial Warn sur l’absence de définitions serialVersionUID sur les classes sérialisables.
    • Enfin avertir des clauses finales qui ne peuvent pas se terminer normalement.
    • Vérifiez les blocs de commutation pour les cas de chute et fournissez un message d’avertissement pour ceux qui sont trouvés.
    • path Rechercher un chemin inexistant dans les chemins d’environnement (tels que classpath).

    Le dernier javac disponible (1.6.0_13) pour mac a les avertissements supportés suivants

    • tout
    • jeter
    • désapprobation
    • divzero
    • vide
    • décoché
    • tomber dans
    • chemin
    • en série
    • enfin
    • annule

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

    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 ressortingctions de SO. D’une part, je suis censé copier la liste plutôt que de fournir uniquement le lien. Mais d’autre part, cela dépasserait le nombre maximum autorisé de caractères. Espérons donc que le lien ne sera pas rompu.

    JSL 1.7

    La documentation Oracle mentionne:

    • unchecked : les avertissements unchecked sont identifiés par la chaîne “non 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é, appelé ou référencé par son nom), sauf si: […] L’utilisation se fait dans une entité annotée pour supprimer l’avertissement avec l’annotation @SuppressWarnings (“deprecation”); ou

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

    Les fournisseurs du compilateur doivent documenter les noms d’avertissement qu’ils prennent en charge conjointement avec ce type d’annotation. Les fournisseurs sont encouragés à coopérer pour s’assurer que les mêmes noms fonctionnent sur plusieurs compilateurs.

    Je veux juste append qu’il existe une liste maîtresse des parameters de suppression d’IntelliJ sur: 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 ssortingng JDBCPrepareStatementWithNonConstantSsortingng 'Iterator.hasNext()' which calls 'next()' IteratorHasNextCallsIteratorNext 'Iterator.next()' which can't throw 'NoSuchElementException' IteratorNextCanNotThrowNoSuchElementException 'Statement.execute()' call with non-constant ssortingng JDBCExecuteWithNonConstantSsortingng 'Ssortingng.equals("")' SsortingngEqualsEmptySsortingng 'SsortingngBuffer' may be 'SsortingngBuilder' (JDK 5.0 only) SsortingngBufferMayBeSsortingngBuilder 'SsortingngBuffer.toSsortingng()' in concatenation SsortingngBufferToSsortingngInConcatenation '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