我想要 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.
我错过什么了吗?我不希望有错误。
1条答案
按热度按时间ql3eal8s1#
这里的问题是,您从tokens列表中排除了static_init,但其中包含变量_def。由于字段定义未分开,因此在现场检查期间会报告您的违规行为。请注意
allowNoEmptyLineBetweenFields
标志在这里不适用,因为它只适用于字段之间没有行,但这里有字段和静态初始化块。当您从check中排除static_init token时,这意味着checkstyle不会检查这个token后面是否有内容,例如,这样的代码不会导致冲突