Checkstyle EmptyLineSeparator 在 class decleration 之前不会在多个空行上失败

Checkstyle EmptyLineSeparator not failing on multiple blank lines before class decleration

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

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

通常,此检查会验证在某些标记上方 是否不超过一个空行。当 importpackage 上方有多个不必要的空格时,它会很好地工作。当检查到达 class 声明时,它也会验证上面的行,但是...

此错误已作为 checkstyle/checkstyle#2067 提交,希望修复将在 Checkstyle 6.11 中发布。

即使使用 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>