Domanda

Sto eseguendo una sostituzione per una classe di terze parti e voglio sopprimere tutti i controlli per esso (poiché lo tengo solo finché la patch non viene accettata).

C'è un modo per sopprimere tutti i controlli per un file?

Ho provato a usare " * " ma ciò fallisce.

È stato utile?

Soluzione

Non so se stai usando la riga di comando o in un IDE, ma in pratica avrai bisogno di un file di suppresions. Se stai modificando manualmente il file di configurazione Checkstyle, aggiungi un nuovo modulo:

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

Il tuo mysuppression.xml può essere qualcosa del tipo:

<?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>

Il valore per " file " l'attributo è fondamentalmente una regex per i tuoi file sorgente e il valore per " checks " L'attributo è regex per ciò che i controlli saltano (" [a-zA-Z0-9] * " sostanzialmente significa saltare tutto). Questo è lo schema che stai cercando, immagino?

Altri suggerimenti

Sono stato in grado di sopprimere i controlli in un file aggiungendo il tag SuppressionCommentFilter nel mio checks.xml:

Innanzitutto, ho aggiunto il tag FileContentHolder come figlio del tag TreeWalker (questo passaggio è non necessario dalla versione 8.1 di com.puppycrawl.tools:checkstyle):

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

Quindi ho aggiunto SuppressionCommentFilter in checks.xml (dalla versione 8.1 di com.puppycrawl.tools:checkstyle - sotto " TreeWalker " node):

<module name="SuppressionCommentFilter"/>

In ogni file che volevo sopprimere i controlli ho inserito il seguente commento nella prima riga del file:

// CHECKSTYLE:OFF

La risposta di Aberrant80 ha aiutato molto. Con l'aiuto del suo suggerimento - usando la corrispondenza del modello regex, sono stato anche in grado di sopprimere lo stile di controllo per un intero pacchetto aggiungendolo al file checkstyle-suppressions.xml. Per es. per saltare i controlli dello stile di controllo su tutti i file java generati automaticamente nel pacchetto jaxb,

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

Se stai usando il plugin Checkclipse Eclipse per Checkstyle, puoi includere o escludere modelli di file (comprese le directory) andando su Checkclipse > Scheda Filtro file nelle proprietà del progetto. Ad esempio, il mio progetto contiene le directory src e test al livello superiore. Voglio che Checkstyle sia applicato solo ai file nella directory src (omettendo test ), quindi ho aggiunto un modello di inclusione simile al seguente:

src/.+java$

Come puoi vedere, usa una sintassi in stile regex per la specifica del modello.

La risposta di @ aberrant80 è molto stimolante anche se non ha funzionato nel mio progetto. Per sopprimere qualsiasi avvertimento che Checkstyle cerca in Foo.java, secondo link , se viene utilizzato maven:

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

E in 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>

Finora la versione più alta è 1.1 (1.2 non esiste).

Esiste un'opzione per ignorare i file protetti da scrittura. O file in un pacchetto.

Se desideri che non venga ispezionato un gruppo di file all'interno di un progetto, puoi filtrare questi file in modo che non vengano ispezionati creando un filtro file

Il filtro file utilizza regex per determinare quali file escludere. Regex opera sul nome completo del file - per questo motivo, potresti anche escludere intere cartelle. In questo caso, se lo desideri, potresti escludere l'intero pacchetto.

Se cerchi un po 'in giro su Google, probabilmente potresti trovare alcuni file di proprietà di Checkstyle Configuration che contengono esempi di ciò che stai cercando. Vorrei suggerire dopo averlo fatto: salvalo come un po 'di modello in modo da poterlo fare riferimento in situazioni future

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top