7

Maven 2 で checkstyle プラグインを使用しています。設定ファイルをデフォルトから a) オンライン ファイル、または b) ローカル ファイルに切り替えたいと考えています。次の2つのことを試しましたが、どちらもうまくいきませんでした。助言がありますか?

A) pom.xml の隣のプロジェクト フォルダーに直接あるローカル ファイル

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <configuration>
        <configLocation>checkstyle.xml</configLocation>
    </configuration>
</plugin>

B)サーバーに保存されているリモートファイル

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <configuration>
        <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation>
    </configuration>
</plugin>

どちらの場合も、次のようなエラーが発生します。

[情報] Checkstyle レポート生成でエラーが発生しました。埋め込みエラー: checkstyle の実行中に失敗しました リソース 'file:checkstyle.xml' が見つかりませんでした。

どんな助けでも大歓迎です!

4

3 に答える 3

6

Checkstyle プラグインのバージョン 3.0.1 を使用しようとしましたconfigLocationが、効果がありません。上記のアプローチを試みましたが、まだ運がありません。

要約すると、上記の答えはおそらく機能しますが、プロパティを設定する必要がある場合がありますcheckstyle.config.location

-Xデバッグ出力を取得するために使用すると、次のことがわかりました。

[DEBUG]   (f) configLocation = config/sun_checks.xml

ログをさらにスクロールすると、configLocation設定されていないようです。

<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation>

そのメッセージに基づいて、<properties>次のようにグローバルにプロパティを設定しました。

<checkstyle.config.location>${basedir}/config/checkstyle-configuration.xml</checkstyle.config.location>

これは機能しましたが、プラグインが例外をスローしました。いくつかのグーグル検索の後、checkstyle 構成ファイルに以下を追加しました。

<module name="Checker">
  ...
  <module name="TreeWalker">
    ...
    <property name="cacheFile" value=""/>

完全を期すために、最後のステップは次の Jira からのもので、2.8 で解決済みとしてマークされています。${cachefile}違いは、プロパティを設定する必要がなく、空の値で動作するように見えることです:

http://jira.codehaus.org/browse/MCHECKSTYLE-159

于 2011-09-19T15:47:32.780 に答える
2

まだ回避策を見つける必要がある他の誰かに役立つかもしれません。ちなみに、私は同じ問題を抱えていて、ファイルはここから/classes/.xmlまたはフォルダーで検索されると思われます。しかし、それは私が含めたプロジェクトフォルダの直後を見ているので

<configuration>
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation>
</configuration>

注: configLocation には L キャップがあります

また、環境でグローバル変数を定義してここで使用することもできます 注: これは単なる回避策であり、上記の行で述べたように機能する必要があります。

于 2012-02-14T10:39:10.587 に答える