web-dev-qa-db-fra.com

Comment supprimer toutes les vérifications pour un fichier dans Checkstyle?

Je fais un remplacement pour une classe tierce et je veux supprimer toutes les vérifications (parce que je le garde seulement jusqu'à ce que le correctif soit accepté).

Existe-t-il un moyen de supprimer toutes les vérifications d'un fichier?

J'ai essayé d'utiliser "*" mais cela a échoué.

51
Alceu Costa

Je ne sais pas si vous utilisez la ligne de commande ou dans un IDE, mais vous aurez essentiellement besoin d'un fichier de suppression. Si vous éditez manuellement le fichier de configuration Checkstyle, ajoutez-y un nouveau module:

<module name="SuppressionFilter">
    <property name="file" value="mysuppressions.xml" />
</module>

Votre mysuppression.xml peut être quelque chose comme:

<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
    "-//Puppy Crawl//DTD Suppressions 1.1//EN"
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">

<suppressions>
    <suppress files="TheClassToIgnore\.Java" checks="[a-zA-Z0-9]*"/>
</suppressions>

La valeur de l'attribut "files" est fondamentalement une regex pour vos fichiers source et la valeur de l'attribut "checks" est une regex pour ce qui est à ignorer ("[a-zA-Z0-9]*" signifie fondamentalement que tout est ignoré). C'est le modèle que vous recherchez, je suppose?

56
aberrant80

J'ai pu supprimer les contrôles d'un fichier en ajoutant la balise SuppressionCommentFilter dans mon fichier checks.xml:

Tout d'abord, j'ai ajouté la balise FileContentHolder en tant qu'enfant de la balise TreeWalker (cette étape est pas nécessaire depuis la version 8.1 de com.puppycrawl.tools:checkstyle):

<module name="TreeWalker">
    ...
    <module name="FileContentsHolder"/>
    ...
</module>

Puis j'ai ajouté SuppressionCommentFilter dans le fichier checks.xml (à partir de la version 8.1 de com.puppycrawl.tools:checkstyle - sous le nœud "TreeWalker"):

<module name="SuppressionCommentFilter"/>

Dans chaque fichier que je voulais supprimer les contrôles, j'ai inséré le commentaire suivant dans la première ligne du fichier:

// CHECKSTYLE:OFF
23
Alceu Costa

la réponse de aberrant80 a beaucoup aidé. Avec l'aide de son indice - en utilisant la correspondance de motif regex, j'ai également pu supprimer le style de contrôle pour un paquet entier en l'ajoutant au fichier checkstyle-suppressions.xml . ignorer les contrôles checkstyle sur tous les fichiers Java générés automatiquement dans le package jaxb,

    <suppressions>
        <suppress checks="[a-zA-Z0-9]*" files="[\\/]jaxb[\\/]" />
    </suppressions>
17
Inxsible

Si vous utilisez le plug-in Checkclipse Eclipse pour Checkstyle, vous pouvez inclure ou exclure des modèles de fichier (y compris des répertoires) en accédant à l'onglet Checkclipse> Filtre de fichier sous les propriétés du projet. Par exemple, mon projet contient les répertoires src et test au niveau supérieur. Je veux que Checkstyle ne soit appliqué qu'aux fichiers du répertoire src (en omettant test ), j'ai donc ajouté un modèle d'inclusion ressemblant à ceci:

src/.+Java$

Comme vous pouvez le constater, il utilise une syntaxe de style regex pour la spécification du motif.

7
Rob H

La réponse de @ aberrant80 est très inspirante même si cela n'a pas fonctionné dans mon projet. Afin de supprimer tout avertissement que checkstyle recherche dans Foo.Java, selon link , si maven est utilisé:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    ...
        <configuration>
            ...
            <configLocation>checkstyle.xml</configLocation>
            <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
            ...
        </configuration>                
    ...
</plugin>

Et dans checkstyle-suppressions.xml

<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress files="Foo.Java" checks="[a-zA-Z0-9]*" />
</suppressions>

Jusqu'à présent, la version la plus récente est 1.1 (la version 1.2 n'existe pas).

2
Tiina

Si vous ne souhaitez pas inspecter un groupe de fichiers au sein d'un projet, vous pouvez les filtrer afin qu'ils ne soient pas inspectés en créant un filtre fichier

Le filtre de fichier utilise regex pour déterminer les fichiers à exclure. L'expression rationnelle agit sur le nom de fichier complet. De ce fait, vous pouvez également exclure des dossiers entiers. Dans ce cas, vous pouvez exclure l'intégralité du package si vous le souhaitez.

Si vous cherchez un peu sur Google, vous pourrez probablement trouver des fichiers de propriétés de configuration Checkstyle contenant des exemples de ce que vous recherchez. Je vous conseillerais après cela de le conserver - enregistrez-le comme un modèle afin que vous puissiez vous y référer ultérieurement.

0
PSU_Kardi

Il existe une option pour ignorer les fichiers protégés en écriture. Ou des fichiers dans un package.

0
akarnokd