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 回答