Ich verwende in einem Projekt Checkstyle und ich habe einen SuppressionFilter in meiner Checkstyle-Konfiguration definiert. Ich verwende Apache ant, um automatische Builds über Continuous Integration zu erstellen.
Meine Probleme ergeben sich aus der folgenden Situation: Ich möchte nicht zu viele Dateien in das Projekt-basedir füllen, also befinden sich die checkstyle.xml und die suppressions.xml beide in einem Unterverzeichnis namens conf (für die Konfiguration für Build) . Jetzt arbeiten Ant und Eclipse anders, um die suppressions.xml zu finden.
Ant benutze das Projekt-basedir als basedir um die suppressions.xml zu finden, nachdem ich eine ant-Aufgabe deklariert habe, um die checkstyle.xml mit der Basiskonfiguration von checkstyle zu finden. Diese checkstyle.xml enthält jetzt Folgendes:
%Vor%Auf diese Weise findet der ant-build die Datei suppressions.xml, weil das basedir des Builds das Projektverzeichnis ist.
Nun bringt das Checkstyle-Plugin für Eclipse ein Problem mit sich. Es sucht nach der suppressions.xml, beginnend mit dem Pfad, den die checkstyle.xml (conf) hat. Für Eclipse musste die Deklaration so aussehen, um zu funktionieren:
%Vor%EDIT: Auch das funktioniert nicht, Eclipse scheint immer einen absoluten Pfad zu benötigen.
Ich möchte wissen, dass sowohl Eclipse als auch Ant mit der gleichen Checkstyle-Konfiguration arbeiten können. Jemand kennt eine Lösung für dieses Problem? Absolute Pfade sind keine Lösung, da jeder Entwickler und der CI-Server unterschiedliche Pfade für das Projektverzeichnis haben.
Verwenden Sie die Eigenschaftserweiterung von Checkstyle. In deinem checkstyle.xml
deklariere dein SupressionFilter
als:
Ändern Sie dann Ihre Checkstyle-Task in Ihrem Ant-Buildskript so, dass sie eine verschachtelte Eigenschaft enthält:
%Vor%Diese Frage ist ziemlich alt, aber ich habe einen besseren Weg gefunden, es mit den Checkstyle Advanced-Eigenschaften :
Beim Plugin Eclipse Checkstyle wird die Eigenschaft ${samedir}
auf das Verzeichnis erweitert, in dem sich die Konfigurationsdatei befindet:
In Ihrem Fall würde Ihre Modulkonfiguration wie folgt aussehen:
%Vor% Das Ant-Ziel würde auch die Eigenschaft samedir
festlegen:
Tags und Links checkstyle ant continuous-integration eclipse-plugin build-process