Class AbstractClassCouplingCheck
- 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.metrics.AbstractClassCouplingCheck
-
- All Implemented Interfaces:
Configurable,Contextualizable
- Direct Known Subclasses:
ClassDataAbstractionCouplingCheck,ClassFanOutComplexityCheck
public abstract class AbstractClassCouplingCheck extends AbstractCheck
Base class for coupling calculation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classAbstractClassCouplingCheck.ClassContextEncapsulates information about class coupling.-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
AutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.regex.PatternBRACKET_PATTERNPattern to match brackets in a full type name.private java.util.Deque<AbstractClassCouplingCheck.ClassContext>classesContextsStack of class contexts.private static java.util.Set<java.lang.String>DEFAULT_EXCLUDED_CLASSESClass names to ignore.private static java.util.Set<java.lang.String>DEFAULT_EXCLUDED_PACKAGESPackage names to ignore.private static java.lang.StringDOTA package separator - "."private java.util.List<java.util.regex.Pattern>excludeClassesRegexpsSpecify user-configured regular expressions to ignore classes.private java.util.Set<java.lang.String>excludedClassesSpecify user-configured class names to ignore.private java.util.Set<java.lang.String>excludedPackagesSpecify user-configured packages to ignore.private java.util.Map<java.lang.String,java.lang.String>importedClassPackagesA map of (imported class name -> class name with package) pairs.private intmaxSpecify the maximum threshold allowed.private java.lang.StringpackageNameCurrent file package.
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractClassCouplingCheck(int defaultMax)Creates new instance of the check.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidbeginTree(DetailAST ast)Called before the starting to process a tree.private voidcheckCurrentClassAndRestorePrevious()Restores previous context.private voidcreateNewClassContext(java.lang.String className, DetailAST ast)Creates new inner class context with given name and location.int[]getDefaultTokens()Returns the default token a check is interested in.protected abstract java.lang.StringgetLogMessageId()Returns message key we use for log violations.private voidleaveClassDef()Restores previous context.voidleaveToken(DetailAST ast)Called after all the child nodes have been process.private voidregisterImport(DetailAST imp)Registers given import.voidsetExcludeClassesRegexps(java.lang.String... from)Setter to specify user-configured regular expressions to ignore classes.voidsetExcludedClasses(java.lang.String... excludedClasses)Setter to specify user-configured class names to ignore.voidsetExcludedPackages(java.lang.String... excludedPackages)Setter to specify user-configured packages to ignore.voidsetMax(int max)Setter to specify the maximum threshold allowed.private voidvisitAnnotationType(DetailAST annotationAST)Visit ANNOTATION literal and get its type to referenced classes of context.private voidvisitClassDef(DetailAST classDef)Creates new context for a given class.private voidvisitLiteralNew(DetailAST ast)Visits NEW token for the current class context.private voidvisitLiteralThrows(DetailAST ast)Visits THROWS token for the current class context.private voidvisitPackageDef(DetailAST pkg)Stores package of current class we check.voidvisitToken(DetailAST ast)Called to process a token.private voidvisitType(DetailAST ast)Visits type token for the current class context.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
clearViolations, destroy, finishTree, getAcceptableTokens, getFileContents, getLine, getLineCodePoints, getLines, getRequiredTokens, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
Field Detail
-
DOT
private static final java.lang.String DOT
A package separator - "."- See Also:
- Constant Field Values
-
DEFAULT_EXCLUDED_CLASSES
private static final java.util.Set<java.lang.String> DEFAULT_EXCLUDED_CLASSES
Class names to ignore.
-
DEFAULT_EXCLUDED_PACKAGES
private static final java.util.Set<java.lang.String> DEFAULT_EXCLUDED_PACKAGES
Package names to ignore.
-
BRACKET_PATTERN
private static final java.util.regex.Pattern BRACKET_PATTERN
Pattern to match brackets in a full type name.
-
excludeClassesRegexps
private final java.util.List<java.util.regex.Pattern> excludeClassesRegexps
Specify user-configured regular expressions to ignore classes.
-
importedClassPackages
private final java.util.Map<java.lang.String,java.lang.String> importedClassPackages
A map of (imported class name -> class name with package) pairs.
-
classesContexts
private final java.util.Deque<AbstractClassCouplingCheck.ClassContext> classesContexts
Stack of class contexts.
-
excludedClasses
private java.util.Set<java.lang.String> excludedClasses
Specify user-configured class names to ignore.
-
excludedPackages
private java.util.Set<java.lang.String> excludedPackages
Specify user-configured packages to ignore. All excluded packages should end with a period, so it also appends a dot to a package name.
-
max
private int max
Specify the maximum threshold allowed.
-
packageName
private java.lang.String packageName
Current file package.
-
-
Constructor Detail
-
AbstractClassCouplingCheck
protected AbstractClassCouplingCheck(int defaultMax)
Creates new instance of the check.- Parameters:
defaultMax- default value for allowed complexity.
-
-
Method Detail
-
getLogMessageId
protected abstract java.lang.String getLogMessageId()
Returns message key we use for log violations.- Returns:
- message key we use for log violations.
-
getDefaultTokens
public final 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
-
setMax
public final void setMax(int max)
Setter to specify the maximum threshold allowed.- Parameters:
max- allowed complexity.
-
setExcludedClasses
public final void setExcludedClasses(java.lang.String... excludedClasses)
Setter to specify user-configured class names to ignore.- Parameters:
excludedClasses- the list of classes to ignore.
-
setExcludeClassesRegexps
public void setExcludeClassesRegexps(java.lang.String... from)
Setter to specify user-configured regular expressions to ignore classes.- Parameters:
from- array representing regular expressions of classes to ignore.
-
setExcludedPackages
public final void setExcludedPackages(java.lang.String... excludedPackages)
Setter to specify user-configured packages to ignore. All excluded packages should end with a period, so it also appends a dot to a package name.- Parameters:
excludedPackages- the list of packages to ignore.- Throws:
java.lang.IllegalArgumentException- if there are invalid identifiers among the packages.
-
beginTree
public final void beginTree(DetailAST ast)
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:
ast- 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
-
visitPackageDef
private void visitPackageDef(DetailAST pkg)
Stores package of current class we check.- Parameters:
pkg- package definition.
-
visitClassDef
private void visitClassDef(DetailAST classDef)
Creates new context for a given class.- Parameters:
classDef- class definition node.
-
leaveClassDef
private void leaveClassDef()
Restores previous context.
-
registerImport
private void registerImport(DetailAST imp)
Registers given import. This allows us to track imported classes.- Parameters:
imp- import definition.
-
createNewClassContext
private void createNewClassContext(java.lang.String className, DetailAST ast)
Creates new inner class context with given name and location.- Parameters:
className- The class name.ast- The class ast.
-
checkCurrentClassAndRestorePrevious
private void checkCurrentClassAndRestorePrevious()
Restores previous context.
-
visitType
private void visitType(DetailAST ast)
Visits type token for the current class context.- Parameters:
ast- TYPE token.
-
visitLiteralNew
private void visitLiteralNew(DetailAST ast)
Visits NEW token for the current class context.- Parameters:
ast- NEW token.
-
visitLiteralThrows
private void visitLiteralThrows(DetailAST ast)
Visits THROWS token for the current class context.- Parameters:
ast- THROWS token.
-
visitAnnotationType
private void visitAnnotationType(DetailAST annotationAST)
Visit ANNOTATION literal and get its type to referenced classes of context.- Parameters:
annotationAST- Annotation ast.
-
-