Class FinalClassCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.api.AutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractCheck
-
- com.puppycrawl.tools.checkstyle.checks.design.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
finalthere.An example of how to configure the check is:
<module name="FinalClass"/>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classFinalClassCheck.ClassDescMaintains information about class' ctors.
-
Field Summary
Fields Modifier and Type Field Description private java.util.Deque<FinalClassCheck.ClassDesc>classesKeeps ClassDesc objects for stack of declared classes.static java.lang.StringMSG_KEYA key is pointing to the warning message text in "messages.properties" file.static java.lang.StringPACKAGE_SEPARATORCharacter separate package names in qualified name of java class.private java.lang.StringpackageNameFull qualified name of the package.
-
Constructor Summary
Constructors Constructor Description FinalClassCheck()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeginTree(DetailAST rootAST)Called before the starting to process a tree.private static booleandoesNameInExtendMatchSuperClassName(java.lang.String superClassQualifiedName, java.lang.String superClassInExtendClause)Checks if given super class name in extend clause match super class qualified name.private static java.lang.StringextractQualifiedName(DetailAST classExtend)Get name of class(with qualified package if specified) in extend clause.int[]getAcceptableTokens()The configurable token set.private static java.lang.StringgetClassNameFromQualifiedName(java.lang.String qualifiedName)Get class name from qualified name.int[]getDefaultTokens()Returns the default token a check is interested in.private java.lang.StringgetQualifiedClassName(DetailAST classAst)Get qualified class name from given class Ast.private static java.lang.StringgetQualifiedClassName(java.lang.String packageName, java.lang.String outerClassQualifiedName, java.lang.String className)Calculate qualified class name(package + class name) laying inside given outer class.int[]getRequiredTokens()The tokens that this check must be registered for.private static java.lang.StringgetSuperClassName(DetailAST classAst)Get super class name of given class.voidleaveToken(DetailAST ast)Called after all the child nodes have been process.private voidregisterNestedSubclassToOuterSuperClasses(DetailAST classAst)Register to outer super classes of given classAst that given classAst is extending them.voidvisitToken(DetailAST ast)Called to process a token.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
destroy, finishTree, getClassLoader, getFileContents, getLine, getLines, getTabWidth, getTokenNames, init, isCommentNodesRequired, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, log, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
-
-
-
-
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
-
classes
private java.util.Deque<FinalClassCheck.ClassDesc> classes
Keeps ClassDesc objects for stack of declared classes.
-
packageName
private java.lang.String packageName
Full qualified name of the package.
-
-
Method Detail
-
getDefaultTokens
public int[] getDefaultTokens()
Description copied from class:AbstractCheckReturns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokensin classAbstractCheck- Returns:
- the default tokens
- See Also:
TokenTypes
-
getAcceptableTokens
public int[] getAcceptableTokens()
Description copied from class:AbstractCheckThe 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:
getAcceptableTokensin classAbstractCheck- Returns:
- the token set this check is designed for.
- See Also:
TokenTypes
-
getRequiredTokens
public int[] getRequiredTokens()
Description copied from class:AbstractCheckThe tokens that this check must be registered for.- Specified by:
getRequiredTokensin classAbstractCheck- Returns:
- the token set this must be registered for.
- See Also:
TokenTypes
-
beginTree
public void beginTree(DetailAST rootAST)
Description copied from class:AbstractCheckCalled before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.- Overrides:
beginTreein classAbstractCheck- Parameters:
rootAST- the root of the tree
-
visitToken
public void visitToken(DetailAST ast)
Description copied from class:AbstractCheckCalled to process a token.- Overrides:
visitTokenin classAbstractCheck- Parameters:
ast- the token to process
-
leaveToken
public void leaveToken(DetailAST ast)
Description copied from class:AbstractCheckCalled after all the child nodes have been process.- Overrides:
leaveTokenin classAbstractCheck- 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 packageouterClassQualifiedName- qualified name(package + class) of outer class, null if doesn't existclassName- 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
-
-