Ich hatte das gleiche Problem mit der Checkstyle-Unterdrückung Konfiguration, wenn ich hin und her zwischen Linux und Windows ging. Hier ist, wie ich es in meinem Ant-basierten Build-System gelöst habe:
Grundsätzlich injiziere ich den richtigen plattformspezifischen Verzeichniswert in die Haupt-Checkstyle-Konfigurationsdatei, indem ich eine Checkstyle-Eigenschaftendatei mit einem Ant-Build-Skript konfiguriere.
Meine Haupt-Checkstyle-Konfigurationsdatei hat eine SuppressionFilter
Moduldeklaration, wie unten gezeigt. Der Wert der checkstyle-suppressions-file
Eigenschaft stammt aus einem Check Properties-Datei:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle-suppressions-file}"/>
</module>
Die Check Eigenschaften Datei nicht statisch ist, wird es von einem Ant-Build-Skript aus einer Properties erzeugt Vorlage template-checkstyle.properties
genannt Datei. Hier ist, was die Vorlage wie für die Unterdrückungen Datei Eigenschaft aussieht:
[email protected][email protected]/checkstyle_suppressions.xml
Meine Ant-Build-Skript kopiert diese Datei in eine Datei mit dem Namen checkstyle.properties
. Die Kopie hat das spezielle Token mit dem richtigen Wert des Verzeichnisses ersetzt, in dem die Unterdrückungen Datei gefunden wird:
<copy file="${scm.dir}/template-checkstyle.properties" tofile="${scm.dir}/checkstyle.properties">
<filterset>
<filter token="SCM_DIR" value="${scm.dir.unix}"/>
</filterset>
</copy>
Nun, wo sich der Wert von scm.dir.unix
kam aus? Nun, es ist abgeleitet von einer Eigenschaft meines Build, lesen Sie weiter. Sie müssen einen solchen Wert mit den angegebenen Verzeichniswerten angeben.
Beachten Sie, dass es ein leicht nicht offensichtliches Problem bezüglich der Art gibt, in der Sie dieses Verzeichnis angeben. Ich sage, dass der Wert scm.dir.unix
von einer Build-Eigenschaft abgeleitet ist, da ich beobachtet habe, dass die Haupt-Checkstyle-Konfigurationsdatei keine umgekehrten Schrägstriche, d. H. Windows-Pfadtrennzeichen, im Wert der file
-Eigenschaft des SuppressionFilter
-Moduls enthalten kann. Zum Beispiel führt die Angabe von C:\foo\bar\baz
zu einer Checkstyle-Fehlermeldung, die besagt, dass C:foobarbaz
nicht gefunden werden kann.Ich arbeite, um dieses durch die scm.dir
Verzeichnis Build-Eigenschaft auf einen "Unix" -Format mit Ant pathconvert
Aufgabe "Umwandlung":
<pathconvert targetos="unix" property="scm.dir.unix">
<path location="${scm.dir}"/>
</pathconvert>
Dann rufe ich die checkstyle
Ant-Task wie folgt aus:
<checkstyle config="${scm.dir}/checkstyle_checks.xml"
properties="${scm.dir}/checkstyle.properties">
<!-- details elided -->
</checkstyle>
Der Aufruf zu der checkstyle
Aufgabe injiziert die Schlüssel/Wert-Paare, die in der checkstyle.properties
-Datei enthalten sind, in die Haupt-Checkstyle-Konfiguration.
Wenn Sie möchten, können Sie die vollständige Skripte sehen here
hoffe, das hilft
Danke für die Tipps, mein Ameisenbau ist jetzt in Ordnung, ignorieren magische Zahlen in Test-Klassen (es ist ein Anfang!). Ich musste eine Änderung an Ihrem mitgelieferten Code vornehmen (als Referenz für alle anderen, die später dazu kommen könnten), der Task fehlt ein "filtering = true"; zumindest wenn ich mit meiner Version von ant laufe. –