2012-12-14 6 views
7

Ich bin mit Maven 3 und Check 2.9.1 in meinem java Projekt und ich habe eine gemeinsame Konfiguration, die check wir auch in mehreren anderen Projekten verwenden. Um zu vermeiden, diese Konfigurationsdatei in mein eigenes Projekt zu kopieren und zu bearbeiten, verwende ich eine Unterdrückungsdatei, um alle Überprüfungen in einigen Paketen (generierten Code) zu deaktivieren.Wie lautet die korrekte Syntax, um bestimmte Checkstyle-Regeln für bestimmte Dateien zu unterdrücken?

Jetzt möchte ich bestimmte Regeln in allen Dateien unterdrücken.

Das ist meine Unterdrückung Datei:

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

Das ist mein POM ist:

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

ich dann

Aufruf bin
mvn checkstyle:checkstyle 

die Berichte zu generieren, aber die unterdrückt Warnungen sind immer noch da.

Was mache ich hier falsch?

Antwort

10

Ok, endlich habe ich es geschafft, eine funktionierende Unterdrückungsdatei für meine Checkstyle-Konfiguration zu erstellen.

Mein ursprüngliches Problem war mit dem regulären Ausdruck, so dass anstelle von files=".*\\.java$" bin ich jetzt files="." mit auf allen Dateien spezielle Prüfungen zu unterdrücken. Ich unterdrücke auch alle Überprüfungen bestimmter Dateien.

Hier sind einige Beispiele aus meinen Unterdrückungen Datei:

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

Wenn Sie mit dem Maven Teil der Konfiguration Hilfe benötigen, die answer von @Mawia sehen.

0

Das funktionierte für mich.

Statt

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

zu tun Ich habe dies in $ {checkstyle.ruleset} (was ich davon ausgehen, ist der XML-Datei für den Check-Stil)

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

Und mein $ {checkstyle.suppressions } hat

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

Nun, die Unterdrückungsdatei wird erkannt und verwendet. Aber die tatsächliche Unterdrückung funktionierte nicht. Ich habe die Lösung gefunden, habe aber heute nicht den Quellcode bei mir. Ich werde meine Frage am Montag aktualisieren. – cringe

+0

$ {checkstyle.ruleset} und $ {checkstyle.suppressions} was geht in diesen beiden? – user1730789

Verwandte Themen