Class CheckUtil


  • public final class CheckUtil
    extends Object
    Contains utility methods for the checks.
    • Constructor Detail

      • CheckUtil

        private CheckUtil()
        Prevent instances.
    • Method Detail

      • 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.
      • isElseIf

        public static boolean isElseIf​(DetailAST ast)
        Returns whether a token represents an ELSE as part of an ELSE / IF set.
        Parameters:
        ast - the token to check
        Returns:
        whether it is
      • isElse

        private static boolean isElse​(DetailAST ast)
        Returns whether a token represents an ELSE.
        Parameters:
        ast - the token to check
        Returns:
        whether the token represents an ELSE
      • isElseWithCurlyBraces

        private static boolean isElseWithCurlyBraces​(DetailAST ast)
        Returns whether a token represents an SLIST as part of an ELSE statement.
        Parameters:
        ast - the token to check
        Returns:
        whether the toke does represent an SLIST as part of an ELSE
      • 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<StringgetTypeParameterNames​(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<DetailASTgetTypeParameters​(DetailAST node)
        Retrieves the type parameters to the node.
        Parameters:
        node - the parameterized AST node
        Returns:
        a list of type parameter names
      • isSetterMethod

        public static boolean isSetterMethod​(DetailAST ast)
        Returns whether an AST represents a setter method.
        Parameters:
        ast - the AST to check with
        Returns:
        whether the AST represents a setter method
      • isGetterMethod

        public static boolean isGetterMethod​(DetailAST ast)
        Returns whether an AST represents a getter method.
        Parameters:
        ast - the AST to check with
        Returns:
        whether the AST represents a getter method
      • 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.
        Parameters:
        parameterDefAst - the parameter node.
        Returns:
        true if the parameter is a receiver.
      • getAccessModifierFromModifiersToken

        public static AccessModifierOption getAccessModifierFromModifiersToken​(DetailAST ast)
        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.
      • getSurroundingAccessModifier

        public static AccessModifierOption getSurroundingAccessModifier​(DetailAST node)
        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<StringparseClassNames​(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​(List<String> lines)
        Helper method for stripIndentAndInitialNewLineFromTextBlock, to determine the smallest indent in a text block string literal.
        Parameters:
        lines - list 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.