Class LineWrappingHandler

java.lang.Object
com.puppycrawl.tools.checkstyle.checks.indentation.LineWrappingHandler

public class LineWrappingHandler extends Object
This class checks line-wrapping into definitions and expressions. The line-wrapping indentation should be not less than value of the lineWrappingIndentation parameter.
  • Field Details

  • Constructor Details

    • LineWrappingHandler

      Sets values of class field, finds last node and calculates indentation level.
      Parameters:
      instance - instance of IndentationCheck.
  • Method Details

    • checkIndentation

      public void checkIndentation(DetailAST firstNode, DetailAST lastNode)
      Checks line wrapping into expressions and definitions using property 'lineWrappingIndentation'.
      Parameters:
      firstNode - First node to start examining.
      lastNode - Last node to examine inclusively.
    • checkIndentation

      private void checkIndentation(DetailAST firstNode, DetailAST lastNode, int indentLevel)
      Checks line wrapping into expressions and definitions.
      Parameters:
      firstNode - First node to start examining.
      lastNode - Last node to examine inclusively.
      indentLevel - Indentation all wrapped lines should use.
    • checkIndentation

      public void checkIndentation(DetailAST firstNode, DetailAST lastNode, int indentLevel, int startIndent, LineWrappingHandler.LineWrappingOptions ignoreFirstLine)
      Checks line wrapping into expressions and definitions.
      Parameters:
      firstNode - First node to start examining.
      lastNode - Last node to examine inclusively.
      indentLevel - Indentation all wrapped lines should use.
      startIndent - Indentation first line before wrapped lines used.
      ignoreFirstLine - Test if first line's indentation should be checked or not.
    • checkForAnnotationIndentation

      public void checkForAnnotationIndentation(NavigableMap<Integer,DetailAST> firstNodesOnLines, int indentLevel)
      Checks for annotation indentation.
      Parameters:
      firstNodesOnLines - the nodes which are present in the beginning of each line.
      indentLevel - line wrapping indentation.
    • checkForNullParameterChild

      public static boolean checkForNullParameterChild(DetailAST node)
      Checks whether parameter node has any child or not.
      Parameters:
      node - the node for which to check.
      Returns:
      true if parameter has no child.
    • checkForMethodLparenNewLine

      public static boolean checkForMethodLparenNewLine(DetailAST node)
      Checks whether the method lparen starts from a new line or not.
      Parameters:
      node - the node for which to check.
      Returns:
      true if method lparen starts from a new line.
    • getNextNodeLine

      private static Integer getNextNodeLine(NavigableMap<Integer,DetailAST> firstNodesOnLines, DetailAST node)
      Gets the next node line from the firstNodesOnLines map unless there is no next line, in which case, it returns the last line.
      Parameters:
      firstNodesOnLines - NavigableMap of lines and their first nodes.
      node - the node for which to find the next node line
      Returns:
      the line number of the next line in the map
    • collectFirstNodes

      Finds first nodes on line and puts them into Map.
      Parameters:
      firstNode - First node to start examining.
      lastNode - Last node to examine inclusively.
      Returns:
      NavigableMap which contains lines numbers as a key and first nodes on lines as a values.
    • shouldProcessTextBlockLiteral

      private boolean shouldProcessTextBlockLiteral(DetailAST node)
      Checks whether indentation of TEXT_BLOCK_LITERAL_END needs to be checked. Yes if it is first on start of the line.
      Parameters:
      node - the node
      Returns:
      true if node is line-starting node.
    • getNextCurNode

      private static DetailAST getNextCurNode(DetailAST curNode)
      Returns next curNode node.
      Parameters:
      curNode - current node.
      Returns:
      next curNode node.
    • checkAnnotationIndentation

      private void checkAnnotationIndentation(DetailAST atNode, NavigableMap<Integer,DetailAST> firstNodesOnLines, int indentLevel)
      Checks line wrapping into annotations.
      Parameters:
      atNode - block tag node.
      firstNodesOnLines - map which contains first nodes as values and line numbers as keys.
      indentLevel - line wrapping indentation.
    • isEndOfScope

      private static boolean isEndOfScope(DetailAST lastAnnotationNode, DetailAST node)
      Checks line for end of scope. Handles occurrences of close braces and close parenthesis on the same line.
      Parameters:
      lastAnnotationNode - the last node of the annotation
      node - the node indicating where to begin checking
      Returns:
      true if all the nodes up to the last annotation node are end of scope nodes false otherwise
    • isParentContainsTokenType

      private static boolean isParentContainsTokenType(DetailAST node, int type)
      Checks that some parent of given node contains given token type.
      Parameters:
      node - node to check
      type - type to look for
      Returns:
      true if there is a parent of given type
    • expandedTabsColumnNo

      private int expandedTabsColumnNo(DetailAST ast)
      Get the column number for the start of a given expression, expanding tabs out into spaces in the process.
      Parameters:
      ast - the expression to find the start of
      Returns:
      the column number for the start of the expression
    • getLineStart

      private int getLineStart(DetailAST ast)
      Get the start of the line for the given expression.
      Parameters:
      ast - the expression to find the start of the line for
      Returns:
      the start of the line for the given expression
    • getLineStart

      private int getLineStart(String line)
      Get the start of the specified line.
      Parameters:
      line - the specified line number
      Returns:
      the start of the specified line
    • logWarningMessage

      private void logWarningMessage(DetailAST currentNode, int currentIndent)
      Logs warning message if indentation is incorrect.
      Parameters:
      currentNode - current node which probably invoked a violation.
      currentIndent - correct indentation.