为什么Checkstyle在import
语句后但class
声明为违规行为之前无法识别空行?
package b.pi.persistence.hibernate;
import java.lang.String;
// ^^^ much space! Why is the above not a violation of EmptyLineSeparator
public class CheckstyleExample {
...
}
声明了以下检查:
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
<property name="allowMultipleEmptyLines" value="false"/>
</module>
答案 0 :(得分:4)
这是因为代码中缺少测试和问题。
通常,此检查会验证某些令牌上方的空行是否超过。当import
或package
上方有多个不必要的空格时,它很有效。当支票到达class
声明时,它也会验证上面的行,但是......
class
令牌的下一个兄弟,它是null
,因为其他人在与文件中此类相同的级别上注明} LI>
null
在第EmptyLineSeparatorCheck.java#L216行跳过整个验证此错误以checkstyle/checkstyle#2067的形式提交,希望修复程序将在Checkstyle 6.11中发布。
答案 1 :(得分:0)
即使在有关此问题的Checkstyle v8.20上有另一个错误修复,仍无法正常工作:https://github.com/checkstyle/checkstyle/issues/5981
我现在将使用一个简单的RegexpMultiline来确保没有多个空行:
<module name="RegexpMultiline">
<property name="message" value="Multiple empty lines after this line."/>
<property name="format" value="[\r]?\n\s*[\r]?\n\s*[\r]?\n"/>
<property name="fileExtensions" value="java"/>
</module>