Découvrez l'utilisation de supressionCommentFilter sur http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter . Vous devrez ajouter le module à votre checkstyle.xml
<module name="SuppressionCommentFilter"/>
et c'est configurable. Ainsi, vous pouvez ajouter des commentaires à votre code pour désactiver le checkstyle (à différents niveaux) puis le réactiver en utilisant des commentaires dans votre code. Par exemple
//CHECKSTYLE:OFF
public void someMethod(String arg1, String arg2, String arg3, String arg4) {
//CHECKSTYLE:ON
Ou encore mieux, utilisez cette version plus peaufinée:
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
qui vous permet de désactiver des vérifications spécifiques pour des lignes de code spécifiques:
//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
catch (Exception e)
//CHECKSTYLE.ON: IllegalCatch
* Remarque: vous devrez également ajouter FileContentsHolder
:
<module name="FileContentsHolder"/>
Voir également
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
sous la SuppressionFilter
section de cette même page, qui vous permet de désactiver les vérifications individuelles des ressources correspondant au modèle.
Donc, si vous avez dans votre checkstyle.xml:
<module name="ParameterNumber">
<property name="id" value="maxParameterNumber"/>
<property name="max" value="3"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
Vous pouvez le désactiver dans votre fichier xml de suppression avec:
<suppress id="maxParameterNumber" files="YourCode.java"/>
Une autre méthode, désormais disponible dans Checkstyle 5.7, consiste à supprimer les violations via l' @SuppressWarnings
annotation java. Pour ce faire, vous devrez ajouter deux nouveaux modules ( SuppressWarningsFilter
et SuppressWarningsHolder
) dans votre fichier de configuration:
<module name="Checker">
...
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
...
<module name="SuppressWarningsHolder" />
</module>
</module>
Ensuite, dans votre code, vous pouvez effectuer les opérations suivantes:
@SuppressWarnings("checkstyle:methodlength")
public void someLongMethod() throws Exception {
ou, pour plusieurs suppressions:
@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})
public void someLongMethod() throws Exception {
NB: Le checkstyle:
préfixe " " est facultatif (mais recommandé). Selon la documentation, le nom du paramètre doit être en minuscules, mais la pratique indique que tous les cas fonctionnent.
//CHECKSTYLE.OFF:
puis oubliez de le réactiver, restera-t-il coché uniquement dans le fichier contenant//CHECKSTYLE.OFF:
ou dans tous les fichiers traités ultérieurement?@SuppressWarnings("checkstyle:VariableDeclarationUsageDistance")
fonctionnait aussi bien pour moi que l'équivalent en minuscules.TreeWalker
, etFileContentHolder
n'est pas nécessaire (disponible) plus.Si vous préférez utiliser des annotations pour faire taire les règles de manière sélective, cela est désormais possible en utilisant l'
@SuppressWarnings
annotation, à partir de Checkstyle 5.7 (et pris en charge par Checkstyle Maven Plugin 2.12+).Tout d'abord, dans votre
checkstyle.xml
, ajoutez leSuppressWarningsHolder
module auTreeWalker
:Ensuite, activez le
SuppressWarningsFilter
là (en tant que frère deTreeWalker
):Vous pouvez maintenant annoter, par exemple, la méthode que vous souhaitez exclure d'une certaine règle Checkstyle:
Le
checkstyle:
préfixe dans l'argument to@SuppressWarnings
est facultatif, mais je l'aime comme un rappel d'où vient cet avertissement. Le nom de la règle doit être en minuscules.Enfin, si vous utilisez Eclipse, il se plaindra du fait que l'argument lui est inconnu:
Vous pouvez désactiver cet avertissement Eclipse dans les préférences si vous le souhaitez:
la source
Ce qui fonctionne également bien est le SuppressWithNearbyCommentFilter qui utilise des commentaires individuels pour supprimer les événements d'audit.
Par exemple
Pour configurer un filtre afin que CHECKSTYLE IGNORE check FOR NEXT var LINES évite de déclencher des audits pour le check donné pour la ligne courante et les prochaines var lines (pour un total de var + 1 lignes):
http://checkstyle.sourceforge.net/config.html
la source
CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES?
rendre la commande ignorer plus lisible. (Vous pourrez utiliser "CHECKSTYLE IGNORE check FOR NEXT 1 LINE" et "CHECKSTYLE IGNORE check FOR NEXT 3 LINES").CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINE
fonctionne aussi pour moi (il correspond à la foisline
etlines
).Chaque réponse faisant référence à SuppressWarningsFilter manque un détail important. Vous ne pouvez utiliser l'ID tout en minuscules que s'il est défini comme tel dans votre checkstyle-config.xml. Sinon, vous devez utiliser le nom du module d'origine.
Par exemple, si dans mon checkstyle-config.xml j'ai:
Je ne peux pas utiliser:
Je dois cependant utiliser:
Pour que la première syntaxe fonctionne, le checkstyle-config.xml doit avoir:
C'est ce qui a fonctionné pour moi, du moins dans la version 6.17 de CheckStyle.
la source
J'ai eu des difficultés avec les réponses ci-dessus, potentiellement parce que j'ai défini les avertissements checkStyle comme des erreurs. Ce qui a fonctionné était SuppressionFilter: http://checkstyle.sourceforge.net/config_filters.html#SuppressionFilter
L'inconvénient est que la plage de lignes est stockée dans un fichier suppresssions.xml séparé, de sorte qu'un développeur inconnu peut ne pas établir immédiatement la connexion.
la source
Pour configurer un filtre pour supprimer les événements d'audit entre un commentaire contenant la ligne BEGIN GENERATED CODE et un commentaire contenant la ligne END GENERATED CODE:
En savoir plus
la source
Vous pouvez essayer https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathFilter
Vous pouvez le configurer comme:
Générez des suppressions Xpath à l'aide de l'interface de ligne de commande avec l'option -g et spécifiez la sortie à l'aide du commutateur -o.
https://checkstyle.sourceforge.io/cmdline.html#Command_line_usage
Voici un extrait de code qui vous aidera à configurer votre génération automatique de suppressions Checkstyle:
Suppressions-xpath.xml est spécifié comme source de suppression Xpath dans la configuration des règles Checkstyle. Dans l'extrait de code ci-dessus, je charge le chemin de classe Checkstyle à partir d'un fichier cs.cp dans une propriété. Vous pouvez choisir de spécifier directement le chemin de classe.
Ou vous pouvez utiliser groovy dans Maven (ou Ant) pour faire de même:
Le seul inconvénient de l'utilisation des suppressions Xpath --- en plus des vérifications qu'il ne prend pas en charge --- est si vous avez du code comme celui-ci:
La suppression Xpath générée dans ce cas n'est pas ingérée par Checkstyle et le vérificateur échoue avec une exception:
La génération de suppressions Xpath est recommandée lorsque vous avez corrigé toutes les autres violations et que vous souhaitez supprimer le reste. Il ne vous permettra pas de sélectionner des instances spécifiques dans le code à supprimer. Vous pouvez cependant sélectionner et choisir des suppressions dans le fichier généré pour cela.
SuppressionXpathSingleFilter est mieux adapté pour identifier et supprimer une règle, un fichier ou un message d'erreur spécifique. Vous pouvez configurer plusieurs filtres identifiant chacun d'eux par l'attribut id.
https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathSingleFilter
la source