11

私はJavaプロジェクトでMaven 3Checkstyle 2.9.1を使用しており、他のいくつかのプロジェクトでも使用している共通の checkstyle 構成を持っています。その構成ファイルを自分のプロジェクトにコピーして編集することを避けるために、抑制ファイルを使用して、一部のパッケージ (生成されたコード) のすべてのチェックを無効にします。

ここで、すべてのファイルで特定のルールを抑制したいと考えています。

これは私の抑制ファイルです:

<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress files="my[\\/]generated[\\/]code[\\/]package" checks="."/>
    <suppress files=".*\\.java$" checks="IndentationCheck"/>
    <suppress files=".*\\.java$" checks="LineLengthCheck"/>
    <suppress files=".*\\.java$" checks="ExplicitInitializationCheck"/>
    <suppress files=".*\\.java$" checks="MemberNameCheck"/>
</suppressions>

これは私のPOMです:

...
<build>
    ...
    <plugins>
    ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
                <configLocation>${checkstyle.ruleset}</configLocation>
                <suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation>
            </configuration>
        </plugin>
    </plugins>
</build>

それから私は電話しています

mvn checkstyle:checkstyle

レポートを生成しますが、抑制された警告はまだそこにあります。

ここで何が間違っていますか?

4

2 に答える 2

14

わかりました、ようやく、checkstyle 構成用の有効な抑制ファイルを作成することができました。

の元の問題は正規表現にあったため、代わりに、すべてのファイルに対する特別なチェックを抑制するためにfiles=".*\\.java$"使用しています。files="."また、特定のファイルに対するすべてのチェックを抑制します。

私の抑制ファイルからのいくつかの例を次に示します。

<?xml version="1.0"?> suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <!-- suppress certain checks on all files in a package -->
    <suppress files="my[\\/]super[\\/]package[\\/]name" checks="ModifierOrderCheck|NeedBracesCheck|MagicNumberCheck"/>
    <!-- suppress all checks on all files in a package -->
    <suppress files="another[\\/]super[\\/]package[\\/]of[\\/]mine" checks=".*"/>
    <!-- suppress certain checks on all files -->
    <suppress files="." checks="IndentationCheck"/>
    <suppress files="." checks="LineLengthCheck"/>
    <suppress files="." checks="ExplicitInitializationCheck"/>
    <suppress files="." checks="MemberNameCheck"/>
    <suppress files="." checks="FinalClassCheck"/>
</suppressions>

構成のMaven部分についてサポートが必要な場合は、@Mawiaの回答を参照してください。

于 2012-12-19T12:29:51.820 に答える
0

これは私のために働いた。

する代わりに

<suppressionsLocation>${checkstyle.suppressions}</suppressionsLocation>

これを${checkstyle.ruleset}に入れます(これはチェックスタイルのxmlファイルだと思います)

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

そして私の${checkstyle.suppressions}には

<suppressions>
    <suppress files="package-info.java" checks="[a-zA-Z0-9]*"/>
    <suppress files="SomeClass.java" checks="[a-zA-Z0-9]*"/>
</suppressions>
于 2012-12-14T13:05:14.420 に答える