检查样式抑制注释不忽略指定规则的筛选器

2022-09-03 18:04:18

我有一个检查样式.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

答案 1

您是否已将 FileContentsHolder 配置为按文档形式进行配置

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

答案 2

这最近也不适合我,但是自checkstyle 8.2以来,接受的答案已经过时了:

remove FileContentHolder 模块,因为 FileContents 对象可用于 TreeWalkerAudit Event 中 TreeWalker 上的过滤器。

但是添加了8.6版本SuppressWithPlainTextCommentFilter

新的检查器过滤器 SuppressWithPlainTextCommentFilter 类似于 Treewalker 的 SuppressionCommentFilter。

我没有使用上面的内容,一切都开始工作。SuppressionCommentFilterSuppressWithPlainTextCommentFilter

例:

  <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

推荐