2012-12-14 16 views
7

Sto usando Maven 3 e Checkstyle 2.9.1 nel mio java progetto e ho una configurazione comune checkstyle che stiamo usando in diversi altri progetti come bene. Per evitare di copiare e modificare il file di configurazione nel mio progetto, utilizzo un file di soppressione per disabilitare tutti i controlli in alcuni pacchetti (codice generato).Qual è la sintassi corretta per sopprimere specifiche regole del check-in su determinati file?

Ora voglio sopprimere le regole specifiche in tutti i file.

Questo è il mio file soppressioni:

<?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="my[\\/]generated[\\/]code[\\/]package" checks="."/> 
    <suppress files=".*\\.java$" checks="IndentationCheck"/> 
    <suppress files=".*\\.java$" checks="LineLengthCheck"/> 
    <suppress files=".*\\.java$" checks="ExplicitInitializationCheck"/> 
    <suppress files=".*\\.java$" checks="MemberNameCheck"/> 
</suppressions> 

Questo è il mio POM:

... 
<build> 
    ... 
    <plugins> 
    ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <version>2.9.1</version> 
      <configuration> 
       <configLocation>${checkstyle.ruleset}</configLocation> 
       <suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Sto quindi chiamando

mvn checkstyle:checkstyle 

per generare i report, ma la soppresso gli avvertimenti sono ancora lì.

Cosa sto facendo di sbagliato qui?

risposta

10

Ok, finalmente sono riuscito a creare un file di soppressione funzionante per la mia configurazione di checkstyle.

mio problema originale era con la regex, così invece di files=".*\\.java$" Ora sto utilizzando files="." di sopprimere i controlli speciali su tutti i file. Inoltre sopprimo tutti i controlli su determinati file.

Ecco alcuni esempi tratti dalla mia soppressioni di file:

<?xml version="1.0"?> suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> 
<suppressions> 
    <!-- suppress certain checks on all files in a package --> 
    <suppress files="my[\\/]super[\\/]package[\\/]name" checks="ModifierOrderCheck|NeedBracesCheck|MagicNumberCheck"/> 
    <!-- suppress all checks on all files in a package --> 
    <suppress files="another[\\/]super[\\/]package[\\/]of[\\/]mine" checks=".*"/> 
    <!-- suppress certain checks on all files --> 
    <suppress files="." checks="IndentationCheck"/> 
    <suppress files="." checks="LineLengthCheck"/> 
    <suppress files="." checks="ExplicitInitializationCheck"/> 
    <suppress files="." checks="MemberNameCheck"/> 
    <suppress files="." checks="FinalClassCheck"/> 
</suppressions> 

Se hai bisogno di aiuto con la Maven parte della configurazione, vedere la answer di @Mawia.

0

Questo ha funzionato per me.

Invece di fare

<suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation> 

Ho messo questo in $ {} checkstyle.ruleset (che presumo sia il file XML per lo stile di controllo)

<module name="SuppressionFilter"> 
    <property name="file" value="${checkstyle.suppressions}" /> 
</module> 

E i miei $ {checkstyle.suppressions } ha

<suppressions> 
    <suppress files="package-info.java" checks="[a-zA-Z0-9]*"/> 
    <suppress files="SomeClass.java" checks="[a-zA-Z0-9]*"/> 
</suppressions> 
+0

Bene, il file di soppressione viene riconosciuto e utilizzato. Ma la vera soppressione non funzionava. Ho trovato la soluzione, ma non ho il codice sorgente con me oggi. Aggiornerò la mia domanda il lunedì – cringe

+0

$ {checkstyle.ruleset} e $ {checkstyle.suppressions} cosa succede in questi due? – user1730789

Problemi correlati