Class NoWhitespaceAfterCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.api.AutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractCheck
-
- com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck
-
- All Implemented Interfaces:
Configurable,Contextualizable
public class NoWhitespaceAfterCheck extends AbstractCheck
Checks that there is no whitespace after a token. More specifically, it checks that it is not followed by whitespace, or (if linebreaks are allowed) all characters on the line after are whitespace. To forbid linebreaks after a token, set property
allowLineBreakstofalse.The check processes ARRAY_DECLARATOR and INDEX_OP tokens specially from other tokens. Actually it is checked that there is no whitespace before this tokens, not after them. Space after the ANNOTATIONS before ARRAY_DECLARATOR and INDEX_OP will be ignored.
-
Property
allowLineBreaks- Control whether whitespace is allowed if the token is at a linebreak. Type isboolean. Default value istrue. -
Property
tokens- tokens to check Type isjava.lang.String[]. Validation type istokenSet. Default value is: ARRAY_INIT, AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR, INDEX_OP.
To configure the check:
<module name="NoWhitespaceAfter"/>
To configure the check to forbid linebreaks after a DOT token:
<module name="NoWhitespaceAfter"> <property name="tokens" value="DOT"/> <property name="allowLineBreaks" value="false"/> </module>
If the annotation is between the type and the array, the check will skip validation for spaces:
public void foo(final char @NotNull [] param) {} // No violationParent is
com.puppycrawl.tools.checkstyle.TreeWalkerViolation Message Keys:
-
ws.followed
- Since:
- 3.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
AutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description private booleanallowLineBreaksControl whether whitespace is allowed if the token is at a linebreak.static java.lang.StringMSG_KEYA key is pointing to the warning message text in "messages.properties" file.
-
Constructor Summary
Constructors Constructor Description NoWhitespaceAfterCheck()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]getAcceptableTokens()The configurable token set.private static DetailASTgetArrayDeclaratorPreviousElement(DetailAST ast)Returns proper argument for getPositionAfter method, it is a token afterARRAY_DECLARATOR, in can beRBRACK,IDENTor an array type definition (literal).int[]getDefaultTokens()Returns the default token a check is interested in.private static DetailASTgetIdentLastToken(DetailAST ast)Gets leftmost token of identifier.private static DetailASTgetIndexOpPreviousElement(DetailAST ast)Gets previous node forINDEX_OPtoken for usage in getPositionAfter method, it is a simplified copy of getArrayDeclaratorPreviousElement method.private static intgetPositionAfter(DetailAST ast)Gets position after token (place of possible redundant whitespace).private static DetailASTgetPrecedingDot(DetailAST leftBracket)Gets the dot preceding a class member array index operation or class reference.private static DetailASTgetPreviousElementOfMultiDimArray(DetailAST leftBracket)Gets the previous element of a second or higher dimension of an array declaration or initialization.private static DetailASTgetPreviousNodeWithParentOfTypeAst(DetailAST ast, DetailAST parent)Finds previous node by text order for an array declarator, which parent type isTYPE.int[]getRequiredTokens()The tokens that this check must be registered for.private static DetailASTgetTypeLastNode(DetailAST ast)Searches parameter node for a type node.private static DetailASTgetWhitespaceFollowedNode(DetailAST ast)For a visited ast node returns node that should be checked for not being followed by whitespace.private booleanhasTrailingWhitespace(DetailAST ast, int whitespaceColumnNo, int whitespaceLineNo)Checks if there is unwanted whitespace after the visited node.voidsetAllowLineBreaks(boolean allowLineBreaks)Setter to control whether whitespace is allowed if the token is at a linebreak.private static booleanshouldCheckWhitespaceAfter(DetailAST ast)Returns whether whitespace after a visited node should be checked.voidvisitToken(DetailAST ast)Called to process a token.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
beginTree, clearViolations, destroy, finishTree, getFileContents, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
Field Detail
-
MSG_KEY
public static final java.lang.String MSG_KEY
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
allowLineBreaks
private boolean allowLineBreaks
Control whether whitespace is allowed if the token is at a linebreak.
-
-
Constructor Detail
-
NoWhitespaceAfterCheck
public NoWhitespaceAfterCheck()
-
-
Method Detail
-
getDefaultTokens
public int[] getDefaultTokens()
Description copied from class:AbstractCheckReturns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokensin classAbstractCheck- Returns:
- the default tokens
- See Also:
TokenTypes
-
getAcceptableTokens
public int[] getAcceptableTokens()
Description copied from class:AbstractCheckThe 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:
getAcceptableTokensin classAbstractCheck- Returns:
- the token set this check is designed for.
- See Also:
TokenTypes
-
getRequiredTokens
public int[] getRequiredTokens()
Description copied from class:AbstractCheckThe tokens that this check must be registered for.- Specified by:
getRequiredTokensin classAbstractCheck- Returns:
- the token set this must be registered for.
- See Also:
TokenTypes
-
setAllowLineBreaks
public void setAllowLineBreaks(boolean allowLineBreaks)
Setter to control whether whitespace is allowed if the token is at a linebreak.- Parameters:
allowLineBreaks- whether whitespace should be flagged at linebreaks.
-
visitToken
public void visitToken(DetailAST ast)
Description copied from class:AbstractCheckCalled to process a token.- Overrides:
visitTokenin classAbstractCheck- Parameters:
ast- the token to process
-
getWhitespaceFollowedNode
private static DetailAST getWhitespaceFollowedNode(DetailAST ast)
For a visited ast node returns node that should be checked for not being followed by whitespace.- Parameters:
ast- , visited node.- Returns:
- node before ast.
-
shouldCheckWhitespaceAfter
private static boolean shouldCheckWhitespaceAfter(DetailAST ast)
Returns whether whitespace after a visited node should be checked. For example, whitespace is not allowed between a type and an array declarator (returns true), except when there is an annotation in between the type and array declarator (returns false).- Parameters:
ast- the visited node- Returns:
- true if whitespace after ast should be checked
-
getPositionAfter
private static int getPositionAfter(DetailAST ast)
Gets position after token (place of possible redundant whitespace).- Parameters:
ast- Node representing token.- Returns:
- position after token.
-
hasTrailingWhitespace
private boolean hasTrailingWhitespace(DetailAST ast, int whitespaceColumnNo, int whitespaceLineNo)
Checks if there is unwanted whitespace after the visited node.- Parameters:
ast- , visited node.whitespaceColumnNo- , column number of a possible whitespace.whitespaceLineNo- , line number of a possible whitespace.- Returns:
- true if whitespace found.
-
getArrayDeclaratorPreviousElement
private static DetailAST getArrayDeclaratorPreviousElement(DetailAST ast)
Returns proper argument for getPositionAfter method, it is a token afterARRAY_DECLARATOR, in can beRBRACK,IDENTor an array type definition (literal).- Parameters:
ast- ,ARRAY_DECLARATORnode.- Returns:
- previous node by text order.
- Throws:
java.lang.IllegalStateException- if an unexpected token type is encountered.
-
getPreviousElementOfMultiDimArray
private static DetailAST getPreviousElementOfMultiDimArray(DetailAST leftBracket)
Gets the previous element of a second or higher dimension of an array declaration or initialization.- Parameters:
leftBracket- the token to get previous element of- Returns:
- the previous element
-
getIndexOpPreviousElement
private static DetailAST getIndexOpPreviousElement(DetailAST ast)
Gets previous node forINDEX_OPtoken for usage in getPositionAfter method, it is a simplified copy of getArrayDeclaratorPreviousElement method.- Parameters:
ast- ,INDEX_OPnode.- Returns:
- previous node by text order.
-
getTypeLastNode
private static DetailAST getTypeLastNode(DetailAST ast)
Searches parameter node for a type node. Returns it or its last node if it has an extended structure.- Parameters:
ast- , subject node.- Returns:
- type node.
-
getPreviousNodeWithParentOfTypeAst
private static DetailAST getPreviousNodeWithParentOfTypeAst(DetailAST ast, DetailAST parent)
Finds previous node by text order for an array declarator, which parent type isTYPE.- Parameters:
ast- , array declarator node.parent- , its parent node.- Returns:
- previous node by text order.
-
getIdentLastToken
private static DetailAST getIdentLastToken(DetailAST ast)
Gets leftmost token of identifier.- Parameters:
ast- , token possibly possessing an identifier.- Returns:
- leftmost token of identifier.
-
getPrecedingDot
private static DetailAST getPrecedingDot(DetailAST leftBracket)
Gets the dot preceding a class member array index operation or class reference.- Parameters:
leftBracket- the ast we are checking- Returns:
- dot preceding the left bracket
-
-