public class EmptyLineSeparatorCheck extends AbstractCheck
Checks for empty line separators before package, all import declarations, fields, constructors, methods, nested classes, static initializers and instance initializers.
Checks for empty line separators before not only statements but implementation and documentation comments and blocks as well.
ATTENTION: empty line separator is required between token siblings, not after line where token is found. If token does not have same type sibling then empty line is required at its end (for example for CLASS_DEF it is after '}'). Also, trailing comments are skipped.
ATTENTION: violations from multiple empty lines cannot be suppressed via XPath: #8179.
allowNoEmptyLineBetweenFields - Allow no empty line between fields.
Type is boolean.
Default value is false.
allowMultipleEmptyLines - Allow multiple empty lines between class members.
Type is boolean.
Default value is true.
allowMultipleEmptyLinesInsideClassMembers - Allow multiple
empty lines inside class members.
Type is boolean.
Default value is true.
tokens - tokens to check
Type is java.lang.String[].
Validation type is tokenSet.
Default value is:
PACKAGE_DEF,
IMPORT,
STATIC_IMPORT,
CLASS_DEF,
INTERFACE_DEF,
ENUM_DEF,
STATIC_INIT,
INSTANCE_INIT,
METHOD_DEF,
CTOR_DEF,
VARIABLE_DEF,
RECORD_DEF,
COMPACT_CTOR_DEF.
To configure the default check:
<module name="EmptyLineSeparator"/>
Example of declarations without empty line separator:
///////////////////////////////////////////////////
//HEADER
///////////////////////////////////////////////////
package com.whitespace; // violation, 'package' should be separated from previous line.
import java.io.Serializable; // violation, 'import' should be separated from previous line.
class Foo { // violation, 'CLASS_DEF' should be separated from previous line.
public static final int FOO_CONST = 1;
public void foo() {} // violation, 'METHOD_DEF' should be separated from previous line.
}
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() {}
}
To check empty line before VARIABLE_DEF and METHOD_DEF:
<module name="EmptyLineSeparator"> <property name="tokens" value="VARIABLE_DEF, METHOD_DEF"/> </module>
To allow no empty line between fields:
<module name="EmptyLineSeparator"> <property name="allowNoEmptyLineBetweenFields" value="true"/> </module>
Example:
class Foo {
int field1; // ok
double field2; // ok
long field3, field4 = 10L, field5; // ok
}
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() {} // OK
}
To disallow multiple empty lines between class members:
<module name="EmptyLineSeparator"> <property name="allowMultipleEmptyLines" value="false"/> </module>
///////////////////////////////////////////////////
//HEADER
///////////////////////////////////////////////////
package com.checkstyle.whitespace; // violation, 'package' has more than 1 empty lines before.
import java.io.Serializable; // violation, 'import' has more than 1 empty lines before.
class Foo { // violation, 'CLASS_DEF' has more than 1 empty lines before.
public static final int FOO_CONST = 1;
public void foo() {} // violation, 'METHOD_DEF' has more than 1 empty lines before.
}
To disallow multiple empty lines inside constructor, initialization block and method:
<module name="EmptyLineSeparator"> <property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/> </module>
The check is valid only for statements that have body: CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF, 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, There is more than 1 empty line one after another
// in previous line.
}
}
To disallow multiple empty lines between class members:
<module name="EmptyLineSeparator"> <property name="allowMultipleEmptyLines" value="false"/> </module>
Example:
package com.puppycrawl.tools.checkstyle.whitespace;
class Test {
private int k;
private static void foo() {} // violation, 'METHOD_DEF' has more than 1 empty lines before.
}
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
empty.line.separator
empty.line.separator.multiple.lines
empty.line.separator.multiple.lines.after
empty.line.separator.multiple.lines.inside
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
MSG_MULTIPLE_LINES
A key is pointing to the warning message empty.line.separator.multiple.lines
in "messages.properties"
file.
|
static java.lang.String |
MSG_MULTIPLE_LINES_AFTER
A key is pointing to the warning message empty.line.separator.lines.after
in "messages.properties" file.
|
static java.lang.String |
MSG_MULTIPLE_LINES_INSIDE
A key is pointing to the warning message empty.line.separator.multiple.lines.inside
in "messages.properties" file.
|
static java.lang.String |
MSG_SHOULD_BE_SEPARATED
A key is pointing to the warning message empty.line.separator in "messages.properties"
file.
|
| Constructor and Description |
|---|
EmptyLineSeparatorCheck() |
| Modifier and Type | Method and Description |
|---|---|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
boolean |
isCommentNodesRequired()
Whether comment nodes are required or not.
|
void |
setAllowMultipleEmptyLines(boolean allow)
Setter to allow multiple empty lines between class members.
|
void |
setAllowMultipleEmptyLinesInsideClassMembers(boolean allow)
Setter to allow multiple empty lines inside class members.
|
void |
setAllowNoEmptyLineBetweenFields(boolean allow)
Setter to allow no empty line between fields.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearViolations, destroy, finishTree, getFileContents, getLine, getLines, getTabWidth, getTokenNames, getViolations, init, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final java.lang.String MSG_SHOULD_BE_SEPARATED
public static final java.lang.String MSG_MULTIPLE_LINES
public static final java.lang.String MSG_MULTIPLE_LINES_AFTER
public static final java.lang.String MSG_MULTIPLE_LINES_INSIDE
public EmptyLineSeparatorCheck()
public final void setAllowNoEmptyLineBetweenFields(boolean allow)
allow - User's value.public void setAllowMultipleEmptyLines(boolean allow)
allow - User's value.public void setAllowMultipleEmptyLinesInsideClassMembers(boolean allow)
allow - User's value.public boolean isCommentNodesRequired()
AbstractCheckisCommentNodesRequired in class AbstractCheckpublic int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processCopyright © 2001-2021. All Rights Reserved.