Class NoWhitespaceAfterCheck

All Implemented Interfaces:
Configurable, Contextualizable

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 allowLineBreaks to false.

The check processes ARRAY_DECLARATOR and INDEX_OP tokens specially from other tokens. Actually it is checked that there is no whitespace before these tokens, not after them. Space after the ANNOTATIONS before ARRAY_DECLARATOR and INDEX_OP will be ignored.

If the annotation is between the type and the array, like char @NotNull [] param, the check will skip validation for spaces.

Note: This check processes the LITERAL_SYNCHRONIZED token only when it appears as a part of a synchronized statement, i.e. synchronized(this) {}.

Parent is com.puppycrawl.tools.checkstyle.TreeWalker

Violation Message Keys:

  • ws.followed
Since:
3.0
  • Field Details

    • MSG_KEY

      public static final String MSG_KEY
      A key is pointing to the warning message text in "messages.properties" file.
      See Also:
    • allowLineBreaks

      private boolean allowLineBreaks
      Control whether whitespace is allowed if the token is at a linebreak.
  • Constructor Details

  • Method Details

    • 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:
    • 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:
    • 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:
    • 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.
      Since:
      3.0
    • visitToken

      public void visitToken(DetailAST ast)
      Description copied from class: AbstractCheck
      Called to process a token.
      Overrides:
      visitToken in class AbstractCheck
      Parameters:
      ast - the token to process
    • getWhitespaceFollowedNode

      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

      Returns proper argument for getPositionAfter method, it is a token after ARRAY_DECLARATOR, in can be RBRACK, IDENT or an array type definition (literal).
      Parameters:
      ast - , ARRAY_DECLARATOR node.
      Returns:
      previous node by text order.
      Throws:
      IllegalStateException - if an unexpected token type is encountered.
    • getPreviousElementOfMultiDimArray

      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

      Gets previous node for INDEX_OP token for usage in getPositionAfter method, it is a simplified copy of getArrayDeclaratorPreviousElement method.
      Parameters:
      ast - , INDEX_OP node.
      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

      Finds previous node by text order for an array declarator, which parent type is TYPE.
      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 Optional<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
    • getReferencedClassDot

      private static Optional<DetailAST> getReferencedClassDot(DetailAST leftBracket)
      Gets the dot preceding a class reference.
      Parameters:
      leftBracket - the ast we are checking
      Returns:
      dot preceding the left bracket