Class EmptyLineSeparatorCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class EmptyLineSeparatorCheck
    extends AbstractCheck
    Checks for empty line separators after header, package, all import declarations, fields, constructors, methods, nested classes, static initializers and instance initializers.

    By default the check will check the following statements: PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF.

    Example of declarations without empty line separator:

     ///////////////////////////////////////////////////
     //HEADER
     ///////////////////////////////////////////////////
     package com.puppycrawl.tools.checkstyle.whitespace;
     import java.io.Serializable;
     class Foo
     {
         public static final int FOO_CONST = 1;
         public void foo() {} //should be separated from previous statement.
     }
     

    An example of how to configure the check with default parameters is:

     <module name="EmptyLineSeparator"/>
     

    Example of declarations with empty line separator that is expected by the Check by default:

     ///////////////////////////////////////////////////
     //HEADER
     ///////////////////////////////////////////////////
    
     package com.puppycrawl.tools.checkstyle.whitespace;
    
     import java.io.Serializable;
    
     class Foo
     {
         public static final int FOO_CONST = 1;
    
         public void foo() {}
     }
     

    An example how to check empty line after VARIABLE_DEF and METHOD_DEF:

     <module name="EmptyLineSeparator">
        <property name="tokens" value="VARIABLE_DEF, METHOD_DEF"/>
     </module>
     

    An example how to allow no empty line between fields:

     <module name="EmptyLineSeparator">
        <property name="allowNoEmptyLineBetweenFields" value="true"/>
     </module>
     

    Example of declarations with multiple empty lines between class members (allowed by default):

     ///////////////////////////////////////////////////
     //HEADER
     ///////////////////////////////////////////////////
    
    
     package com.puppycrawl.tools.checkstyle.whitespace;
    
    
    
     import java.io.Serializable;
    
    
     class Foo
     {
         public static final int FOO_CONST = 1;
    
    
    
         public void foo() {}
     }
     

    An example how to disallow multiple empty lines between class members:

     <module name="EmptyLineSeparator">
        <property name="allowMultipleEmptyLines" value="false"/>
     </module>
     

    An example how to disallow multiple empty line inside methods, constructors, etc.:

     <module name="EmptyLineSeparator">
        <property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
     </module>
     

    The check is valid only for statements that have body: TokenTypes.CLASS_DEF, TokenTypes.INTERFACE_DEF, TokenTypes.ENUM_DEF, TokenTypes.STATIC_INIT, TokenTypes.INSTANCE_INIT, TokenTypes.METHOD_DEF, TokenTypes.CTOR_DEF

    Example of declarations with multiple empty lines inside method:

     ///////////////////////////////////////////////////
     //HEADER
     ///////////////////////////////////////////////////
    
     package com.puppycrawl.tools.checkstyle.whitespace;
    
     class Foo
     {
    
         public void foo() {
    
    
              System.out.println(1); // violation since method has 2 empty lines subsequently
         }
     }
     
    • Field Detail

      • MSG_SHOULD_BE_SEPARATED

        public static final String MSG_SHOULD_BE_SEPARATED
        A key is pointing to the warning message empty.line.separator in "messages.properties" file.
        See Also:
        Constant Field Values
      • MSG_MULTIPLE_LINES

        public static final String MSG_MULTIPLE_LINES
        A key is pointing to the warning message empty.line.separator.multiple.lines in "messages.properties" file.
        See Also:
        Constant Field Values
      • MSG_MULTIPLE_LINES_AFTER

        public static final String MSG_MULTIPLE_LINES_AFTER
        A key is pointing to the warning message empty.line.separator.lines.after in "messages.properties" file.
        See Also:
        Constant Field Values
      • MSG_MULTIPLE_LINES_INSIDE

        public static final String MSG_MULTIPLE_LINES_INSIDE
        A key is pointing to the warning message empty.line.separator.multiple.lines.inside in "messages.properties" file.
        See Also:
        Constant Field Values
    • Constructor Detail

      • EmptyLineSeparatorCheck

        public EmptyLineSeparatorCheck()
    • Method Detail

      • setAllowNoEmptyLineBetweenFields

        public final void setAllowNoEmptyLineBetweenFields​(boolean allow)
        Allow no empty line between fields.
        Parameters:
        allow - User's value.
      • setAllowMultipleEmptyLines

        public void setAllowMultipleEmptyLines​(boolean allow)
        Allow multiple empty lines between class members.
        Parameters:
        allow - User's value.
      • setAllowMultipleEmptyLinesInsideClassMembers

        public void setAllowMultipleEmptyLinesInsideClassMembers​(boolean allow)
        Allow multiple empty lines inside class members.
        Parameters:
        allow - User's value.
      • isCommentNodesRequired

        public boolean isCommentNodesRequired()
        Description copied from class: AbstractCheck
        Whether comment nodes are required or not.
        Overrides:
        isCommentNodesRequired in class AbstractCheck
        Returns:
        false as a default value.
      • getDefaultTokens

        public int[] getDefaultTokens()
        Description copied from class: AbstractCheck
        Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
        Specified by:
        getDefaultTokens in class AbstractCheck
        Returns:
        the default tokens
        See Also:
        TokenTypes
      • getAcceptableTokens

        public int[] getAcceptableTokens()
        Description copied from class: AbstractCheck
        The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.
        Specified by:
        getAcceptableTokens in class AbstractCheck
        Returns:
        the token set this check is designed for.
        See Also:
        TokenTypes
      • getRequiredTokens

        public int[] getRequiredTokens()
        Description copied from class: AbstractCheck
        The tokens that this check must be registered for.
        Specified by:
        getRequiredTokens in class AbstractCheck
        Returns:
        the token set this must be registered for.
        See Also:
        TokenTypes