Class GenericClassCounterRule
- java.lang.Object
-
- net.sourceforge.pmd.properties.AbstractPropertySource
-
- net.sourceforge.pmd.lang.rule.AbstractRule
-
- net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
-
- net.sourceforge.pmd.lang.java.rule.design.GenericClassCounterRule
-
- All Implemented Interfaces:
JavaParserVisitor
,net.sourceforge.pmd.lang.rule.ImmutableLanguage
,net.sourceforge.pmd.properties.PropertySource
,net.sourceforge.pmd.Rule
public class GenericClassCounterRule extends AbstractJavaRule
A generic rule that can be configured to "count" classes of certain type based on either their name (full name, prefix, suffixes anything can be matched with a regex), and/or their type.
Example of configurations:
<!-- Property order is MANDATORY !!! --> <!-- Several regexes may be provided to ensure a match... --> <property name="nameMatch" description="a regex on which to match" value="^Abstract.*Bean*$,^*EJB*$"/> <!-- An operand to refine match strategy TODO: Not implemented yet !!! --> <property name"operand" description="" value="and"/> <!-- possible values are and/or --> <!-- Must be a full name to ensure type control !!! --> <property name="typeMatch" description="a regex to match on implements/extends classname" value="javax.servlet.Filter"/> <!-- Define after how many occurences one should log a violation --> <property name="threshold" description="Defines how many occurences are legal" value="2"/> <!-- TODO: Add a parameter to allow "ignore" pattern based on name -->
- Author:
- Ryan Gutafson, [email protected], Romain PELISSE, [email protected]
-
-
Constructor Summary
Constructors Constructor Description GenericClassCounterRule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
end(net.sourceforge.pmd.RuleContext ctx)
protected void
init()
void
start(net.sourceforge.pmd.RuleContext ctx)
Object
visit(ASTClassOrInterfaceType classType, Object data)
Object
visit(ASTCompilationUnit node, Object data)
Object
visit(ASTImportDeclaration node, Object data)
-
Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
apply, getDeclaringType, importsPackage, isQualifiedName, isSuppressed, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitAll
-
Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, deepCopy, deepCopyValuesTo, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getParserOptions, getPriority, getPropertySourceType, getRuleChainVisits, getRuleClass, getRuleSetName, getSince, hashCode, isDeprecated, isDfa, isMultifile, isRuleChain, isTypeResolution, setDeprecated, setDescription, setDfa, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setMultifile, setName, setPriority, setRuleClass, setRuleSetName, setSince, setTypeResolution, setUsesDFA, setUsesMultifile, setUsesTypeResolution, usesDFA, usesMultifile, usesRuleChain, usesTypeResolution
-
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, dysfunctionReason, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.sourceforge.pmd.properties.PropertySource
definePropertyDescriptor, dysfunctionReason, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
-
-
-
Method Detail
-
init
protected void init()
-
start
public void start(net.sourceforge.pmd.RuleContext ctx)
- Specified by:
start
in interfacenet.sourceforge.pmd.Rule
- Overrides:
start
in classnet.sourceforge.pmd.lang.rule.AbstractRule
-
visit
public Object visit(ASTCompilationUnit node, Object data)
- Specified by:
visit
in interfaceJavaParserVisitor
- Overrides:
visit
in classAbstractJavaRule
-
visit
public Object visit(ASTImportDeclaration node, Object data)
- Specified by:
visit
in interfaceJavaParserVisitor
- Overrides:
visit
in classAbstractJavaRule
-
visit
public Object visit(ASTClassOrInterfaceType classType, Object data)
- Specified by:
visit
in interfaceJavaParserVisitor
- Overrides:
visit
in classAbstractJavaRule
-
end
public void end(net.sourceforge.pmd.RuleContext ctx)
- Specified by:
end
in interfacenet.sourceforge.pmd.Rule
- Overrides:
end
in classnet.sourceforge.pmd.lang.rule.AbstractRule
-
-