我正在对第三方类进行覆盖,并且我想取消对它的所有检查(因为我只保留它直到补丁被接受为止)。
有没有办法抑制对文件的所有检查?
我尝试使用“*”但失败了。
不知道您是使用命令行还是在 IDE 中,但您基本上需要一个抑制文件。如果您手动编辑 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]*
”基本上意味着跳过所有内容)。我猜这就是您正在寻找的模式?
我可以通过在 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
aberrant80的回答很有帮助。在他的提示 - 使用正则表达式模式匹配的帮助下,我还能够通过将其添加到 checkstyle-suppressions.xml 文件来抑制整个包的 checkstyle。 例如。跳过对 jaxb 包下所有自动生成的 java 文件的 checkstyle 检查,
<suppressions>
<suppress checks="[a-zA-Z0-9]*" files="[\\/]jaxb[\\/]" />
</suppressions>
如果您使用 Checkstyle 的 Checkclipse Eclipse 插件,则可以通过转到项目属性下的 Checkclipse > 文件过滤器选项卡来包含或排除文件模式(包括目录)。例如,我的项目在顶层包含 src 和 test 目录。我希望 Checkstyle 仅应用于 src 目录中的文件(省略 test),因此我添加了一个如下所示的包含模式:
src/.+java$
如您所见,它使用正则表达式样式语法进行模式规范。
@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不存在)。
有一个选项可以忽略写保护的文件。或者是一个包中的文件。
如果您不希望检查项目中的一组文件,您可以通过创建文件过滤器
过滤掉这些文件,这样它们就不会被检查文件过滤器使用正则表达式来确定要排除哪些文件。正则表达式对完整文件名进行操作 - 因此,您还可以排除整个文件夹。在这种情况下,如果您愿意,您可以排除整个包。
如果您用谷歌搜索一下 - 您可能会找到一些 Checkstyle 配置属性文件,其中包含您正在寻找的内容的示例。我建议您这样做后 - 将其保存为一个模板,以便您可以在将来的情况下参考它
例如。跳过对 jaxb 包下所有自动生成的 java 文件的 checkstyle 检查,
在上面的答案中,我们如何定义我的包名称是否为 com.uba.au.core 而不是 jaxb