maven 检查样式SuppressionCommentFilter未忽略指定规则

eqfvzcg8  于 2022-11-22  发布在  Maven
关注(0)|答案(3)|浏览(180)

我有一个checkstyle.xml,看起来像这样:

<module name="Checker">
    ....

    <module name="SuppressionCommentFilter">
        <property name="offCommentFormat" value="CSOFF\: ([\w\|]+)"/>
        <property name="onCommentFormat" value="CSON\: ([\w\|]+)"/>
        <property name="checkFormat" value="$1"/>
    </module>

    <module name="TreeWalker">
        <module name="LineLength">
            <property name="max" value="200"/>
        </module>
        ....
    </module>
</module>

在我的一个类中,我有一行超过200个字符,并将以下内容放在它周围:

// CSOFF: LineLength
...
// CSON: LineLength

但是,所讨论的行不会作为checkstyle的一部分被忽略。
我在pom.xml中指定了以下内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <configLocation>checkstyle.xml</configLocation>
            </configuration>
        </plugin>
    </plugins>
</build>

以及执行以下步骤:

mvn checkstyle:checkstyle
5vf7fwbs

5vf7fwbs1#

是否已将FileContentsHolder配置为documented

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

b1uwtaje2#

这对我最近也不起作用,但自checkstyle 8.2以来,公认的答案已经过时了:
删除FileContentsHolder模块,因为FileContents对象可用于TreeWalkerAudit事件中TreeWalker上筛选器
然而,版本8.6增加了SuppressWithPlainTextCommentFilter
新的Checker过滤器"抑制纯文本注解过滤器“,类似于Treewalker的”抑制注解过滤器“。
我没有使用SuppressionCommentFilter,而是使用了上面的SuppressWithPlainTextCommentFilter,一切都开始工作了。
示例:

<module name="TreeWalker">
    ...
  </module>
  <module name="SuppressWithPlainTextCommentFilter">
    <property name="offCommentFormat" value="CSOFF: ALL"/>
    <property name="onCommentFormat" value="CSON: ALL"/>
  </module>
  <module name="SuppressWithPlainTextCommentFilter">
    <property name="offCommentFormat" value="CSOFF\: ([\w\|]+)"/>
    <property name="onCommentFormat" value="CSON\: ([\w\|]+)"/>
    <property name="checkFormat" value="$1"/>
  </module>

现在我能做的

public static final int lowerCaseConstant; // CSOFF: ConstantNameCheck
public final static int MultipleERRORS;; // CSOFF: ALL
5us2dqdw

5us2dqdw3#

我偶然发现了一个使用此模块忽略事件审核的计划。前面提到的许多注解并不反映文档中发布的信息。讨论将是关于checkstyle 9.3。SuppressionCommentFilter无法根据文档工作的主要原因是:此筛选器只能在TreeWalker模块()中指定,并且只能应用于也在此模块中定义得检查.若要筛选出TreeWalker以外得检查(如RegexpSingleline),必须使用SuppressWithPlainTextCommentFilter或类似得筛选器.
我还想指出一个重要的注意事项,即checkC和checkCPP类似于SuppressWithPlainTextCommentFilter中的缺失。
请记住,模块可以包含ignorePattern属性,该属性可以帮助您忽略值。
最后,我想向您展示我在checkstyle.xml中使用的代码的类似部分

<module name="Checker">
    <module name="SuppressWithPlainTextCommentFilter">
        <property name="offCommentFormat" value="CHECKSTYLE.OFF"/>
        <property name="onCommentFormat" value="CHECKSTYLE.ON"/>
    </module>
    <module name="TreeWalker">
       ...
    </module>
</module>

相关问题