public class NoWhitespaceBeforeCheck extends AbstractCheck
Checks that there is no whitespace before a token.
More specifically, it checks that it is not preceded with whitespace,
or (if linebreaks are allowed) all characters on the line before are
whitespace. To allow linebreaks before a token, set property
allowLineBreaks
to true
. No check occurs before semi-colons in empty
for loop initializers or conditions.
allowLineBreaks
- Control whether whitespace is allowed
if the token is at a linebreak.
Type is boolean
.
Default value is false
.
tokens
- tokens to check
Type is int[]
.
Default value is:
COMMA,
SEMI,
POST_INC,
POST_DEC,
ELLIPSIS,
LABELED_STAT.
To configure the check:
<module name="NoWhitespaceBefore"/>
Example:
int foo; foo ++; // violation, whitespace before '++' is not allowed foo++; // OK for (int i = 0 ; i < 5; i++) {} // violation // ^ whitespace before ';' is not allowed for (int i = 0; i < 5; i++) {} // OK int[][] array = { { 1, 2 } , { 3, 4 } }; // violation, whitespace before ',' is not allowed int[][] array2 = { { 1, 2 }, { 3, 4 } }; // OK Lists.charactersOf("foo").listIterator() .forEachRemaining(System.out::print) ; // violation, whitespace before ';' is not allowed { label1 : // violation, whitespace before ':' is not allowed for (int i = 0; i < 10; i++) {} } { label2: // OK while (true) {} }
To configure the check to allow linebreaks before default tokens:
<module name="NoWhitespaceBefore"> <property name="allowLineBreaks" value="true"/> </module>
Example:
int[][] array = { { 1, 2 } , { 3, 4 } }; // OK, linebreak is allowed before ',' int[][] array2 = { { 1, 2 }, { 3, 4 } }; // OK, ideal code void ellipsisExample(String ...params) {}; // violation, whitespace before '...' is not allowed void ellipsisExample2(String ...params) {}; //OK, linebreak is allowed before '...' Lists.charactersOf("foo") .listIterator() .forEachRemaining(System.out::print); // OK
To Configure the check to restrict the use of whitespace before METHOD_REF and DOT tokens:
<module name="NoWhitespaceBefore"> <property name="tokens" value="METHOD_REF"/> <property name="tokens" value="DOT"/> </module>
Example:
Lists.charactersOf("foo").listIterator() .forEachRemaining(System.out::print); // violation, whitespace before '.' is not allowed Lists.charactersOf("foo").listIterator().forEachRemaining(System.out ::print); // violation, // whitespace before '::' is not allowed ^ Lists.charactersOf("foo").listIterator().forEachRemaining(System.out::print); // OK
To configure the check to allow linebreak before METHOD_REF and DOT tokens:
<module name="NoWhitespaceBefore"> <property name="tokens" value="METHOD_REF"/> <property name="tokens" value="DOT"/> <property name="allowLineBreaks" value="true"/> </module>
Example:
Lists .charactersOf("foo") //violation, whitespace before '.' is not allowed .listIterator() .forEachRemaining(System.out ::print); // violation, // ^ whitespace before '::' is not allowed Lists.charactersOf("foo") .listIterator() .forEachRemaining(System.out::print); // OK
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
ws.preceded
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
Constructor and Description |
---|
NoWhitespaceBeforeCheck() |
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.
|
void |
setAllowLineBreaks(boolean allowLineBreaks)
Setter to control whether whitespace is allowed if the token is at a linebreak.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final String MSG_KEY
public NoWhitespaceBeforeCheck()
public int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processpublic void setAllowLineBreaks(boolean allowLineBreaks)
allowLineBreaks
- whether whitespace should be
flagged at line breaks.Copyright © 2001–2020. All rights reserved.