8

プロジェクトのcheckstyleで使用し、checkstyle-configurationでSuppressionFilterを定義しました。Apache antを使用して、継続的インテグレーションを介して自動ビルドを作成します。

私の問題は次の状況から来ています:プロジェクトベースのirに多くのファイルを入力したくないので、checkstyle.xmlとsuppressions.xmlは両方ともconfという名前のサブディレクトリにあります(ビルドの構成用)。現在、AntとEclipseは、suppressions.xmlを見つけるために異なる動作をします。

Antは、checkstyleの基本構成でcheckstyle.xmlを検索するant-taskを宣言した後、suppressions.xmlを検索するためのbasedirとしてproject-basedirを使用します。このcheckstyle.xmlには、次のものが含まれています。

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

このようにして、ビルドのベースはproject-directoryであるため、ant-buildはsuppressions.xmlを検出します。

Eclipseにcheckstyle-pluginを使用すると、問題が発生します。checkstyle.xmlが持つパス(conf)で始まるsuppressions.xmlを探します。Eclipseの場合、宣言は次のように機能する必要がありました。

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

編集:それが機能しない場合でも、Eclipseには常に絶対パスが必要なようです。

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

4

2 に答える 2

10

この質問はかなり古いものですが、 Checkstyle Advanced プロパティを使用してより良い方法を見つけました。

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>
于 2011-10-03T19:30:37.593 に答える
8

Checkstyleのプロパティ拡張機能を使用します。あなたの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>
于 2009-04-06T13:03:47.530 に答える