Java Checkstyle Rule To Restrict Method Empty Lines

前端 未结 4 1358
春和景丽
春和景丽 2021-01-19 10:19

Is there a way to setup checkstyle to prevent leading, multiple or trailing empty lines in method bodies:

e.g.

private void a() {
-
int a = 1;
doStu         


        
相关标签:
4条回答
  • 2021-01-19 10:35

    Can use it:

    <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>
    
    0 讨论(0)
  • 2021-01-19 10:36

    To enforce no blank lines at the beginning and end of any block, you can use multi-line regular expression checks:

    <module name="RegexpMultiline">
        <property name="message" value="Blank line at start of block should be removed" />
        <property name="format" value="(?&lt;=\{\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="(?&lt;!\{\s{0,99}$)^$(?=^\s{0,99}\})" />
        <property name="fileExtensions" value="groovy,java" />
    </module>
    

    "^$" signifies the blank line.

    0 讨论(0)
  • 2021-01-19 10:44

    To prevent leading empty lines in method bodies, you can use:

    <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>
    

    We can find method by parentheses.

    0 讨论(0)
  • 2021-01-19 10:50

    To prevent multiple empty lines you can use the EmptyLineSeparator check. Its primary purpose is to ensure that there is an empty line between members in a file, but it also has a allowMultipleEmptyLines property which you can set to "false" to disallow them.

    There is however currently a bug with the check that means it doesn't correctly detect multiple empty lines between methods where there is a comment (including JavaDoc) between the methods. I am working on a fix for this at the moment.

    As for checking for new lines at the beginning or end of a block, I think the RegexpMultiline check would be the only option as mentioned in Pankaj's answer.

    0 讨论(0)
提交回复
热议问题