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

Alc*_*sta 55 java checkstyle

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

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

我尝试使用"*",但失败了.

abe*_*t80 60

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

<module name="SuppressionFilter">
    <property name="file" value="mysuppressions.xml" />
</module>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

" files"属性的值基本上是源文件的正则表达式," checks"属性的值是用于跳过哪些检查的正则表达式(" [a-zA-Z0-9]*"基本上意味着跳过所有内容).这是你想要的模式吗?

  • 要跳过名为"generated"的目录(包)下的所有文件中的所有检查,必须使用正则表达式模式`<suppress checks ="[a-zA-Z0-9]*"files ="[\\ /]生成[\\/]"/>`我找到**文件**参数的正确模式真的很难. (2认同)
  • `[a-zA-Z0-9] *`似乎过多,为什么不只使用`。*`? (2认同)

Alc*_*sta 24

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

首先,我添加了FileContentHolder标签作为TreeWalker标签的孩子(这一步是没有必要的,因为com.puppycrawl.tools:checkstyle版本8.1):

<module name="TreeWalker">
    ...
    <module name="FileContentsHolder"/>
    ...
</module>
Run Code Online (Sandbox Code Playgroud)

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

<module name="SuppressionCommentFilter"/>
Run Code Online (Sandbox Code Playgroud)

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

// CHECKSTYLE:OFF
Run Code Online (Sandbox Code Playgroud)

  • 因为这刚刚让我绊倒了——@MatanRubin 的评论对于 checkstyle 8.0 之前的版本是准确的。然而,checkstyle 8.1 和 8.2 做了一些向后不兼容的更改:现在正确的做法是将 `SuppressionCommentFilter` 放在 `TreeWalker` 下。“FileContentsHolder”模块似乎已被完全删除——不再需要了。 (2认同)

小智 17

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

    <suppressions>
        <suppress checks="[a-zA-Z0-9]*" files="[\\/]jaxb[\\/]" />
    </suppressions>
Run Code Online (Sandbox Code Playgroud)

  • 如果路径分隔符是“/”,则可以仅使用“.*”作为“checks”,使用“/jaxb/”作为“files”。 (3认同)

Rob*_*b H 7

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

src/.+java$
Run Code Online (Sandbox Code Playgroud)

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

  • 在当前版本的插件中,必须先取消选择"使用简单配置",然后才能访问可配置文件集. (3认同)