如何在Checkstyle中禁止对文件进行所有检查?

时间:2009-06-18 12:36:34

标签: java checkstyle

我正在对第三方类进行覆盖,并且我想要取消对它的所有检查(因为我只保留它直到接受补丁)。

有没有办法抑制文件的所有检查?

我尝试使用“*”,但失败了。

7 个答案:

答案 0 :(得分:57)

不知道您是在使用命令行还是在IDE中,但您基本上需要一个suppresions文件。如果您手动编辑Checkstyle配置文件,请向其添加一个新模块:

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

您的mysuppression.xml可能类似于:

<?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="TheClassToIgnore\.java" checks="[a-zA-Z0-9]*"/>
</suppressions>

files”属性的值基本上是源文件的正则表达式,“checks”属性的值是要跳过哪些检查的正则表达式(“[a-zA-Z0-9]* “基本上意味着跳过一切)。这是你想要的模式吗?

答案 1 :(得分:23)

我可以通过在checks.xml中添加SuppressionCommentFilter标记来抑制文件中的检查:

首先,我将FileContentHolder标记添加为TreeWalker标记的子标记(从com.puppycrawl.tools:checkstyle的8.1版开始,此步骤):

<module name="TreeWalker">
    ...
    <module name="FileContentsHolder"/>
    ...
</module>

然后我在checks.xml中添加了SuppressionCommentFilter(从com.puppycrawl.tools:checkstyle版本8.1开始 - 在“TreeWalker”节点下):

<module name="SuppressionCommentFilter"/>

在我想要取消检查的每个文件中,我在文件的第一行插入了以下注释:

// CHECKSTYLE:OFF

答案 2 :(得分:17)

aberrant80的回答帮了很多忙。在他的提示的帮助下 - 使用正则表达式模式匹配,我还能够通过将其添加到checkstyle-suppressions.xml文件来抑制整个包的checkstyle。 例如。跳过jaxb包下所有自动生成的java文件的checkstyle检查,

    <suppressions>
        <suppress checks="[a-zA-Z0-9]*" files="[\\/]jaxb[\\/]" />
    </suppressions>

答案 3 :(得分:7)

如果您正在使用Checkstyle的Checkclipse Eclipse插件,您可以通过转到Checkclipse&gt;来包含或排除文件模式(包括目录)。项目属性下的文件过滤器选项卡例如,我的项目在顶层包含 src 测试目录。我希望Checkstyle只应用于 src 目录中的文件(省略测试),所以我添加了一个如下所示的包含模式:

src/.+java$

如您所见,它使用正则表达式样式进行模式规范。

答案 4 :(得分:2)

@ aberrant80的答案非常鼓舞人心,虽然它在我的项目中没有起作用。为了抑制checkstyle在Foo.java中查找的任何警告,根据link,如果使用了maven:

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

checkstyle-suppressions.xml

<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress files="Foo.java" checks="[a-zA-Z0-9]*" />
</suppressions>

到目前为止,最高版本是1.1(1.2不存在)。

答案 5 :(得分:0)

可以选择忽略写保护文件。或包中的文件。

答案 6 :(得分:0)

如果您希望检查项目中没有一组文件,可以过滤这些文件,以便通过创建文件过滤器

来检查这些文件

文件过滤器使用正则表达式来确定要排除的文件。正则表达式对完整的文件名进行操作 - 因此,您还可以排除整个文件夹。在这种情况下,如果您愿意,可以排除整个包裹。

如果您稍微谷歌 - 您可能会找到一些Checkstyle配置属性文件,其中包含您要查找的内容的示例。我建议你这样做之后 - 把它保存为一个模板,这样你可以在以后的情况下参考它