在类复制之前,Checkstyle EmptyLineSeparator在多个空行上没有失败

时间:2015-09-01 13:26:04

标签: checkstyle

为什么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>

2 个答案:

答案 0 :(得分:4)

这是因为代码中缺少测试和问题。

通常,此检查会验证某些令牌上方的空行是否超过。当importpackage上方有多个不必要的空格时,它很有效。当支票到达class声明时,它也会验证上面的行,但是......

此错误以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>