Class CheckUtil

java.lang.Object
com.puppycrawl.tools.checkstyle.utils.CheckUtil

public final class CheckUtil extends Object
Contains utility methods for the checks.
  • Field Details

  • Constructor Details

    • CheckUtil

      private CheckUtil()
      Prevent instances.
  • Method Details

    • isEqualsMethod

      public static boolean isEqualsMethod(DetailAST ast)
      Tests whether a method definition AST defines an equals covariant.
      Parameters:
      ast - the method definition AST to test. Precondition: ast is a TokenTypes.METHOD_DEF node.
      Returns:
      true if ast defines an equals covariant.
    • parseDouble

      public static double parseDouble(String text, int type)
      Returns the value represented by the specified string of the specified type. Returns 0 for types other than float, double, int, and long.
      Parameters:
      text - the string to be parsed.
      type - the token type of the text. Should be a constant of TokenTypes.
      Returns:
      the double value represented by the string argument.
    • parseNumber

      private static double parseNumber(String text, int radix, int type)
      Parses the string argument as an integer or a long in the radix specified by the second argument. The characters in the string must all be digits of the specified radix.
      Parameters:
      text - the String containing the integer representation to be parsed. Precondition: text contains a parsable int.
      radix - the radix to be used while parsing text.
      type - the token type of the text. Should be a constant of TokenTypes.
      Returns:
      the number represented by the string argument in the specified radix.
    • getFirstNode

      public static DetailAST getFirstNode(DetailAST node)
      Finds sub-node for given node minimal (line, column) pair.
      Parameters:
      node - the root of tree for search.
      Returns:
      sub-node with minimal (line, column) pair.
    • isBeforeInSource

      public static boolean isBeforeInSource(DetailAST ast1, DetailAST ast2)
      Retrieves whether ast1 is located before ast2.
      Parameters:
      ast1 - the first node.
      ast2 - the second node.
      Returns:
      true, if ast1 is located before ast2.
    • getTypeParameterNames

      public static List<String> getTypeParameterNames(DetailAST node)
      Retrieves the names of the type parameters to the node.
      Parameters:
      node - the parameterized AST node
      Returns:
      a list of type parameter names
    • getTypeParameters

      public static List<DetailAST> getTypeParameters(DetailAST node)
      Retrieves the type parameters to the node.
      Parameters:
      node - the parameterized AST node
      Returns:
      a list of type parameter names
    • isNonVoidMethod

      public static boolean isNonVoidMethod(DetailAST methodDefAst)
      Checks whether a method is a not void one.
      Parameters:
      methodDefAst - the method node.
      Returns:
      true if method is a not void one.
    • isReceiverParameter

      public static boolean isReceiverParameter(DetailAST parameterDefAst)
      Checks whether a parameter is a receiver.

      A receiver parameter is a special parameter that represents the object for which the method is invoked. It is denoted by the reserved keyword this in the method declaration. Check PARAMETER_DEF

      Parameters:
      parameterDefAst - the parameter node.
      Returns:
      true if the parameter is a receiver.
      See Also:
    • getAccessModifierFromModifiersToken

      Returns the access modifier of the method/constructor at the specified AST. If the method is in an interface or annotation block, the access modifier is assumed to be public.
      Parameters:
      ast - the token of the method/constructor.
      Returns:
      the access modifier of the method/constructor.
    • getAccessModifierFromModifiersTokenDirectly

      Returns AccessModifierOption based on the information about access modifier taken from the given token of type TokenTypes.MODIFIERS.
      Parameters:
      modifiersToken - token of type TokenTypes.MODIFIERS.
      Returns:
      AccessModifierOption.
      Throws:
      IllegalArgumentException - when expected non-null modifiersToken with type 'MODIFIERS'
    • getSurroundingAccessModifier

      Returns the access modifier of the surrounding "block".
      Parameters:
      node - the node to return the access modifier for
      Returns:
      the access modifier of the surrounding block
    • parseClassNames

      public static Set<String> parseClassNames(String... classNames)
      Create set of class names and short class names.
      Parameters:
      classNames - array of class names.
      Returns:
      set of class names and short class names.
    • stripIndentAndInitialNewLineFromTextBlock

      public static String stripIndentAndInitialNewLineFromTextBlock(String textBlockContent)
      Strip initial newline and preceding whitespace on each line from text block content. In order to be consistent with how javac handles this task, we have modeled this implementation after the code from: github.com/openjdk/jdk14u/blob/master/src/java.base/share/classes/java/lang/String.java
      Parameters:
      textBlockContent - the actual content of the text block.
      Returns:
      string consistent with javac representation.
    • stripIndentAndTrailingWhitespaceFromLine

      private static String stripIndentAndTrailingWhitespaceFromLine(String line, int indent)
      Helper method for stripIndentAndInitialNewLineFromTextBlock, strips correct indent from string, and trailing whitespace, or returns empty string if no text.
      Parameters:
      line - the string to strip indent and trailing whitespace from
      indent - the amount of indent to remove
      Returns:
      modified string with removed indent and trailing whitespace, or empty string.
    • getSmallestIndent

      private static int getSmallestIndent(Collection<String> lines)
      Helper method for stripIndentAndInitialNewLineFromTextBlock, to determine the smallest indent in a text block string literal.
      Parameters:
      lines - collection of actual text block content, split by line.
      Returns:
      number of spaces representing the smallest indent in this text block.
    • lastIndexOfNonWhitespace

      private static int lastIndexOfNonWhitespace(String line)
      Helper method to find the index of the last non-whitespace character in a string.
      Parameters:
      line - the string to find the last index of a non-whitespace character for.
      Returns:
      the index of the last non-whitespace character.
    • typeDeclarationNameMatchingCount

      public static int typeDeclarationNameMatchingCount(String patternClass, String classToBeMatched)
      Calculates and returns the type declaration name matching count.

      Suppose our pattern class is foo.a.b and class to be matched is foo.a.ball then type declaration name matching count would be calculated by comparing every character, and updating main counter when we hit "." to prevent matching "a.b" with "a.ball". In this case type declaration name matching count would be equal to 6 and not 7 (b of ball is not counted).

      Parameters:
      patternClass - class against which the given class has to be matched
      classToBeMatched - class to be matched
      Returns:
      class name matching count
    • getQualifiedTypeDeclarationName

      public static String getQualifiedTypeDeclarationName(String packageName, String outerClassQualifiedName, String className)
      Get the qualified name of type declaration by combining packageName, outerClassQualifiedName and className.
      Parameters:
      packageName - packageName
      outerClassQualifiedName - outerClassQualifiedName
      className - className
      Returns:
      the qualified name of type declaration by combining packageName, outerClassQualifiedName and className
    • extractQualifiedName

      public static String extractQualifiedName(DetailAST ast)
      Get name of package and super class of anon inner class by concatenating the identifier values under TokenTypes.DOT.
      Parameters:
      ast - ast to extract superclass or package name from
      Returns:
      qualified name
    • getShortNameOfAnonInnerClass

      public static String getShortNameOfAnonInnerClass(DetailAST literalNewAst)
      Get the short name of super class of anonymous inner class. Example:
       TestClass.NestedClass obj = new Test().new NestedClass() {};
       // Short name will be Test.NestedClass
       
      Parameters:
      literalNewAst - ast node of type TokenTypes.LITERAL_NEW
      Returns:
      short name of base class of anonymous inner class
    • isPackageInfo

      public static boolean isPackageInfo(String filePath)
      Checks if the given file path is a package-info.java file.
      Parameters:
      filePath - path to the file.
      Returns:
      true if the package file.
    • isTerminated

      public static boolean isTerminated(DetailAST ast)
      Checks if a given subtree is terminated by return, throw, break, continue, or yield.
      Parameters:
      ast - root of given subtree
      Returns:
      true if the subtree is terminated.
    • isTerminated

      private static boolean isTerminated(DetailAST ast, boolean useBreak, boolean useContinue, Set<String> labelsForCurrentSwitchScope)
      Checks if a given subtree terminated by return, throw, yield or, if allowed break, continue. When analyzing fall-through cases in switch statements, a Set of String labels is used to keep track of the labels encountered in the enclosing switch statements.
      Parameters:
      ast - root of given subtree
      useBreak - should we consider break as terminator
      useContinue - should we consider continue as terminator
      labelsForCurrentSwitchScope - the Set labels for the current scope of the switch
      Returns:
      true if the subtree is terminated.
    • hasLabel

      private static boolean hasLabel(DetailAST statement, Set<String> labelsForCurrentSwitchScope)
      Checks if given break or continue ast has outer label.
      Parameters:
      statement - break or continue node
      labelsForCurrentSwitchScope - the Set labels for the current scope of the switch
      Returns:
      true if local label used
    • checkSlist

      private static boolean checkSlist(DetailAST slistAst, boolean useBreak, boolean useContinue, Set<String> labels)
      Checks if a given SLIST terminated by return, throw or, if allowed break, continue.
      Parameters:
      slistAst - SLIST to check
      useBreak - should we consider break as terminator
      useContinue - should we consider continue as terminator
      labels - label names
      Returns:
      true if SLIST is terminated.
    • checkIf

      private static boolean checkIf(DetailAST ast, boolean useBreak, boolean useContinue, Set<String> labels)
      Checks if a given IF terminated by return, throw or, if allowed break, continue.
      Parameters:
      ast - IF to check
      useBreak - should we consider break as terminator
      useContinue - should we consider continue as terminator
      labels - label names
      Returns:
      true if IF is terminated.
    • getNextNonCommentAst

      This method will skip the comment content while finding the next ast of current ast.
      Parameters:
      ast - current ast
      Returns:
      next ast after skipping comment
    • checkLoop

      private static boolean checkLoop(DetailAST ast, Set<String> labels)
      Checks if a given loop terminated by return, throw or, if allowed break, continue.
      Parameters:
      ast - loop to check
      labels - label names
      Returns:
      true if loop is terminated.
    • checkTry

      private static boolean checkTry(DetailAST ast, boolean useBreak, boolean useContinue, Set<String> labels)
      Checks if a given try/catch/finally block terminated by return, throw or, if allowed break, continue.
      Parameters:
      ast - loop to check
      useBreak - should we consider break as terminator
      useContinue - should we consider continue as terminator
      labels - label names
      Returns:
      true if try/catch/finally block is terminated
    • checkSwitch

      private static boolean checkSwitch(DetailAST literalSwitchAst, boolean useContinue, Set<String> labels)
      Checks if a given switch terminated by return, throw or, if allowed break, continue.
      Parameters:
      literalSwitchAst - loop to check
      useContinue - should we consider continue as terminator
      labels - label names
      Returns:
      true if switch is terminated
    • checkSynchronized

      private static boolean checkSynchronized(DetailAST synchronizedAst, boolean useBreak, boolean useContinue, Set<String> labels)
      Checks if a given synchronized block terminated by return, throw or, if allowed break, continue.
      Parameters:
      synchronizedAst - synchronized block to check.
      useBreak - should we consider break as terminator
      useContinue - should we consider continue as terminator
      labels - label names
      Returns:
      true if synchronized block is terminated