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>
这是因为缺乏测试和代码问题。
通常,此检查会验证在某些标记上方 是否不超过一个空行。当 import
或 package
上方有多个不必要的空格时,它会很好地工作。当检查到达 class
声明时,它也会验证上面的行,但是...
- 在第 EmptyLineSeparatorCheck.java#L214 行获得了
class
令牌的下一个兄弟,它是 null
,因为在文件中注意到与此 class 处于同一级别的其他内容
- 因为下一个兄弟是
null
整个验证在第 EmptyLineSeparatorCheck.java#L216 行被跳过
此错误已作为 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>
为什么 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>
这是因为缺乏测试和代码问题。
通常,此检查会验证在某些标记上方 是否不超过一个空行。当 import
或 package
上方有多个不必要的空格时,它会很好地工作。当检查到达 class
声明时,它也会验证上面的行,但是...
- 在第 EmptyLineSeparatorCheck.java#L214 行获得了
class
令牌的下一个兄弟,它是null
,因为在文件中注意到与此 class 处于同一级别的其他内容 - 因为下一个兄弟是
null
整个验证在第 EmptyLineSeparatorCheck.java#L216 行被跳过
此错误已作为 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>