28

我想从我的 checkstyle 报告中忽略一个特定的文件夹(名为 generate-sources),因为它们是生成的。

我正在使用 eclipse-cs 来显示我的违规行为。

我在我的 xml 中添加了一个抑制过滤器:

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

我的 suppresss.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="\*generated-sources\*\*\.\*" checks="[a-zA-Z0-9]*"/>
</suppressions>

但它不工作。有任何想法吗?

4

4 回答 4

37
<suppress files="[\\/]generated-sources[\\/]" checks="[a-zA-Z0-9]*"/>

这有效:)

于 2013-08-02T09:28:20.950 回答
2

除了 Philipp 的回答之外,我还必须对抑制文件使用绝对路径名( :-( ):

<module name="SuppressionFilter">
    <property name="file" value="/Users/xxx/workspace/suppressions.xml"/>
</module>

看起来 Checkstyle 插件没有使用项目主目录。

(至少在 eclipse luna / Mac OS X 下)

于 2014-07-16T12:36:32.590 回答
1

正如Thomas Welsch在他的回答中指出的那样,使用相对路径名来抑制 xml 文件似乎存在问题。

对于 gradle 构建,此要点建议一种解决方法:

build.gradle

checkstyle {
    // use one common config file for all subprojects
    configFile = project(':').file('config/checkstyle/checkstyle.xml')
    configProperties = [ "suppressionFile" : project(':').file('config/checkstyle/suppressions.xml')]
 }

checkstyle.xml

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

(默认值允许没有整理出 gradle 变量的 IDE 插件正常工作)

于 2019-08-21T06:56:41.090 回答
0

这个答案试图填补之前答案中缺失的细节。

假设我有以下 maven 项目,它只列出了项目内的目录。

.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── edu
    │   │       └── utexas
    │   │           └── cs
    │   │               ├── liveoak
    │   │               │   ├── common
    │   │               │   ├── tree
    │   │               │   └── zero
    │   │               ├── logging
    │   │               └── sam
    │   │                   ├── core
    │   │                   │   └── instructions
    │   │                   ├── io
    │   │                   ├── ui
    │   │                   │   └── components
    │   │                   └── utils
    │   └── resources
    │       ├── sam-checks.xml
    │       └── sam-suppressions.xml
    └── test
 

sam-checks.xml是checkstyle配置文件,sam-suppressions.xml抑制xml文件。在里面sam-checks.xml,我有

<module name="SuppressionFilter">
    <property name="file" value="src/main/resources/sam-suppressions.xml"/>
    <property name="optional" value="false"/>
</module>

注意 的位置sam-suppressions.xml是相对于pom.xml项目的。

我想禁止检查sam目录 ( main/java/edu/utexas/cs/sam) 下的所有 java 文件。为此,我的sam-suppressions.xml外观如下

<!DOCTYPE suppressions PUBLIC
        "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
        "https://checkstyle.org/dtds/suppressions_1_2.dtd">

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

我用 . 验证我的设置mvn checkstyle:check。一切都应该工作。

于 2021-07-26T00:17:42.823 回答