8

私はプロジェクトcheckstyleで使用し、私はcheckstyle-configurationにSuppressionFilterを定義しました。私はApache Antを使用して、Continuous Integrationを介して自動ビルドを行います。抑制スタイルを定義する方法 - antとeclipseの両方で動作するcheckstyleの定義

私の問題は、プロジェクトベースのディレクトリに多くのファイルを書きたくないので、checkstyle.xmlとsuppressions.xmlは両方ともconfという名前のサブディレクトリにあります)。 AntとEclipseは、suppressions.xmlの検索方法が異なります。

Antは、checkstyleの基本設定でcheckstyle.xmlを見つけるためのant-taskを宣言した後に、suppressions.xmlを見つけるためのbasedirとしてプロジェクトベースのディレクトリを使用します。ビルドのbasedirには、プロジェクト・ディレクトリであるため、ANT-ビルドはsuppressions.xmlを見つけ

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

この方法:このcheckstyle.xmlは今、次が含まれています。

ここではcheckstyle-pluginをEclipseに使用すると問題が発生します。 checkstyle.xmlが持つパスから始まるsuppressions.xmlを探します(conf)。 Eclipse用の宣言が動作するように、このように見ていた:

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

はEDIT:でも、それが動作しない、Eclipseは常に絶対パスを必要としているようです。

EclipseとAntの両方が同じcheckstyle構成で動作する方法を知りたいと思います。誰かがこの問題の解決策を知っていますか?絶対パスは解決策ではありません。なぜなら、すべての開発者とCIサーバーにはプロジェクトディレクトリのパスが異なるからです。

答えて

6

Checkstyleのproperty expansion機能を使用してください。あなたのcheckstyle.xmlで宣言し、あなたのSupressionFilterとして:

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

その後、ネストされたプロパティが含まれるようにAntビルドスクリプトで、あなたのCheckstyleのタスクを変更:

<checkstyle config="conf/checkstyle.xml"> 
    <fileset dir="src" includes="**/*.java"/> 
    <property key="checkstyle.suppressions.file" value="conf/suppressions.xml"/> 
</checkstyle> 
+0

おかげで、。 1つの例外は記述上の誤りです.Eclipseには絶対パスが必要です。 – Mnementh

9

この質問はかなり古いですが、私が見つけましたCheckstyle Advanced properties

Eclipse Checkstyleプラグインの場合、${samedir}プロパティは、設定ファイルが配置されているディレクトリ:

に展開されますあなたのケースでは

、あなたのモジュール構成は次のようになります。

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

Antターゲットもsamedirプロパティを設定します:作品

<checkstyle config="${checkstyle.tool.dir}/checks.xml" failOnViolation="false"> 
    <fileset dir="${src.dir}" includes="**/*.java" /> 
    <property key="samedir" value="${checkstyle.tool.dir}/conf" /> 
</checkstyle> 
+0

Upvoted。 $ {samedir}は私が後にしたものです。 –

+1

プロジェクト相対パスについては、 '$ {basedir}'(より多くのパスプロンプトのリンクを参照)を使用することができます。これにより、多くのプロジェクトに対して共通の 'checkstyle.xml'を使用することができますが、各プロジェクトには抑制ファイルが保存されます。 –

+0

gradle checkstyle-pluginに$ {samedir}を使用する方法はありますか? http://stackoverflow.com/questions/29602867/using-samedir-in-gradle-and-eclipse – Edward

関連する問題