有没有办法设置checkstyle以防止方法体中的前导,多行或尾随空行:
e.g。
private void a() {
-
int a = 1;
doStuff(a);
-
-
doMoreStuff(a);
-
}
在上面的例子中,我用-
个字符表示空行。
我希望能够防止方法体中的前导线,尾随线和多行。
答案 0 :(得分:1)
要防止方法主体中的前导空行,您可以使用:
<module name="RegexpMultiline">
<property name="message" value="Blank line at start of method should be removed"/>
<property name="format" value="\(.*\)\s*\{\s*\n\s*\n"/>
</module>
我们可以通过括号找到方法。
答案 1 :(得分:0)
要在任何区块的开头和结尾处强制不使用空白行,您可以使用多行正则表达式检查:
<module name="RegexpMultiline">
<property name="message" value="Blank line at start of block should be removed" />
<property name="format" value="(?<=\{\s{0,99}$)^$" />
<property name="fileExtensions" value="groovy,java" />
</module>
<module name="RegexpMultiline">
<property name="message" value="Blank line at end of block should be removed" />
<property name="format" value="(?<!\{\s{0,99}$)^$(?=^\s{0,99}\})" />
<property name="fileExtensions" value="groovy,java" />
</module>
“^ $”表示空行。
答案 2 :(得分:0)
要防止多个空行,您可以使用EmptyLineSeparator
检查。其主要目的是确保文件中成员之间存在空行,但它也具有allowMultipleEmptyLines
属性,您可以将其设置为“false”以禁止它们。
但是目前有一个bug带有检查,这意味着它无法正确检测方法之间存在注释(包括JavaDoc)的方法之间的多个空行。我目前正在为fix工作。
至于在块的开头或结尾检查新行,我认为RegexpMultiline
检查是Pankaj答案中提到的唯一选项。
答案 3 :(得分:0)
可以使用它:
<module name="Regexp">
<property name="message" value="Blank line at start of block is not allowed"/>
<property name="format" value="\{\s*$^\s*$"/>
<property name="ignoreComments" value="true"/>
<property name="illegalPattern" value="true"/>
</module>
<module name="Regexp">
<property name="message" value="Blank line at end of block is not allowed"/>
<property name="format" value="^\s*$^\s*\}"/>
<property name="ignoreComments" value="true"/>
<property name="illegalPattern" value="true"/>
</module>
答案 4 :(得分:0)
这是我在方法开头检查空行的建议
<module name="RegexpMultiline">
<property name="id" value="RegexpMultilineEmptyRowBeforeStartOfMethod"/>
<property name="message" value="Blank line at start of method or block should be removed"/>
<property name="format" value="\)(\s)*\{\r?\n(\s)*\n"/>
<property name="fileExtensions" value="java"/>
</module>