Class FinalClassCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class FinalClassCheck
    extends AbstractCheck

    Checks that class which has only private ctors is declared as final. Doesn't check for classes nested in interfaces or annotations, as they are always final there.

    An example of how to configure the check is:

     <module name="FinalClass"/>
     
    • 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
      • PACKAGE_SEPARATOR

        public static final java.lang.String PACKAGE_SEPARATOR
        Character separate package names in qualified name of java class.
        See Also:
        Constant Field Values
      • packageName

        private java.lang.String packageName
        Full qualified name of the package.
    • Constructor Detail

      • FinalClassCheck

        public FinalClassCheck()
    • Method Detail

      • 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:
        TokenTypes
      • 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:
        TokenTypes
      • 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:
        TokenTypes
      • beginTree

        public void beginTree​(DetailAST rootAST)
        Description copied from class: AbstractCheck
        Called before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.
        Overrides:
        beginTree in class AbstractCheck
        Parameters:
        rootAST - the root of the tree
      • leaveToken

        public void leaveToken​(DetailAST ast)
        Description copied from class: AbstractCheck
        Called after all the child nodes have been process.
        Overrides:
        leaveToken in class AbstractCheck
        Parameters:
        ast - the token leaving
      • extractQualifiedName

        private static java.lang.String extractQualifiedName​(DetailAST classExtend)
        Get name of class(with qualified package if specified) in extend clause.
        Parameters:
        classExtend - extend clause to extract class name
        Returns:
        super class name
      • registerNestedSubclassToOuterSuperClasses

        private void registerNestedSubclassToOuterSuperClasses​(DetailAST classAst)
        Register to outer super classes of given classAst that given classAst is extending them.
        Parameters:
        classAst - class which outer super classes will be informed about nesting subclass
      • getQualifiedClassName

        private java.lang.String getQualifiedClassName​(DetailAST classAst)
        Get qualified class name from given class Ast.
        Parameters:
        classAst - class to get qualified class name
        Returns:
        qualified class name of a class
      • getQualifiedClassName

        private static java.lang.String getQualifiedClassName​(java.lang.String packageName,
                                                              java.lang.String outerClassQualifiedName,
                                                              java.lang.String className)
        Calculate qualified class name(package + class name) laying inside given outer class.
        Parameters:
        packageName - package name, empty string on default package
        outerClassQualifiedName - qualified name(package + class) of outer class, null if doesn't exist
        className - class name
        Returns:
        qualified class name(package + class name)
      • getSuperClassName

        private static java.lang.String getSuperClassName​(DetailAST classAst)
        Get super class name of given class.
        Parameters:
        classAst - class
        Returns:
        super class name or null if super class is not specified
      • doesNameInExtendMatchSuperClassName

        private static boolean doesNameInExtendMatchSuperClassName​(java.lang.String superClassQualifiedName,
                                                                   java.lang.String superClassInExtendClause)
        Checks if given super class name in extend clause match super class qualified name.
        Parameters:
        superClassQualifiedName - super class qualified name (with package)
        superClassInExtendClause - name in extend clause
        Returns:
        true if given super class name in extend clause match super class qualified name, false otherwise
      • getClassNameFromQualifiedName

        private static java.lang.String getClassNameFromQualifiedName​(java.lang.String qualifiedName)
        Get class name from qualified name.
        Parameters:
        qualifiedName - qualified class name
        Returns:
        class name