【问题标题】:Checkstyle EmptyLineSeparator ignores custom tokensCheckstyle EmptyLineSeparator 忽略自定义标记
【发布时间】:2021-02-27 13:13:45
【问题描述】:

我想要EmptyLineSeparator 没有令牌STATIC_INIT(我使用的是版本 8.36.2)。

我的简单 java 类:

package com.test;

public class Test {
    private static final int[] FIELD = new int[5];
    static {
        FIELD[0] = 16;
        FIELD[1] = 8;
        FIELD[2] = 6;
        FIELD[3] = 10;
        FIELD[4] = 10;
    }
}

我的 checkstyle.xml:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
        "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
        "https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name="Checker">
    <module name="TreeWalker">
        <module name="EmptyLineSeparator">
            <property name="tokens"
            value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, INSTANCE_INIT,
            METHOD_DEF, CTOR_DEF, VARIABLE_DEF, RECORD_DEF, COMPACT_CTOR_DEF"/>
            <property name="allowNoEmptyLineBetweenFields" value="true"/>
            <property name="allowMultipleEmptyLines" value="false"/>
        </module>
    </module>
</module>

但仍然看到我的构建失败,因为:

/var/tmp $ java -jar checkstyle-8.36.2-all.jar -c config.xml Test.java
Starting audit...
[ERROR] /dev/tmp/Test.java:5:5:
   'STATIC_INIT' should be separated from previous statement. [EmptyLineSeparator]
Audit done.
Checkstyle ends with 1 errors.

我错过了什么吗? 我预计没有错误。

【问题讨论】:

    标签: java checkstyle


    【解决方案1】:

    这里的问题是您从令牌列表中排除了 STATIC_INIT,但其中包含 VARIABLE_DEF。 在现场检查期间报告您的违规行为,因为字段定义未分开。请注意,allowNoEmptyLineBetweenFields 标志在此处不适用,因为它仅适用于 字段之间的无行,但此处您有字段和静态初始化块。

    当您从检查中排除 STATIC_INIT 令牌时,这意味着 checkstyle 不会检查此令牌之后是否有任何内容,例如这样的代码不会导致违规

    public class Test {
        private static final int[] FIELD = new int[5];
    
        static {
            FIELD[0] = 16;
            FIELD[1] = 8;
            FIELD[2] = 6;
            FIELD[3] = 10;
            FIELD[4] = 10;
        }
        private int myOtherField; // no violation
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2011-03-31
      相关资源
      最近更新 更多