Class LoosePackageCouplingRule
- 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.LoosePackageCouplingRule
-
- All Implemented Interfaces:
JavaParserVisitor,ImmutableLanguage,PropertySource,Rule
public class LoosePackageCouplingRule extends AbstractJavaRule
The loose package coupling Rule can be used to ensure coupling outside of a package hierarchy is minimized to all but an allowed set of classes from within the package hierarchy.For example, supposed you have the following package hierarchy:
org.sampleorg.sample.implorg.sample.util
org.sample.SampleInterface.This rule can be used to ensure that all classes within the
org.samplepackage and its sub-packages are not used outside of theorg.samplepackage hierarchy. Further, the only allowed usage outside of a class in theorg.samplehierarchy would be viaorg.sample.SampleInterface.
-
-
Field Summary
Fields Modifier and Type Field Description static PropertyDescriptor<List<String>>CLASSES_DESCRIPTORstatic PropertyDescriptor<List<String>>PACKAGES_DESCRIPTOR-
Fields inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
propertyDescriptors, propertyValuesByDescriptor
-
Fields inherited from interface net.sourceforge.pmd.Rule
VIOLATION_SUPPRESS_REGEX_DESCRIPTOR, VIOLATION_SUPPRESS_XPATH_DESCRIPTOR
-
-
Constructor Summary
Constructors Constructor Description LoosePackageCouplingRule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanchecksNothing()StringdysfunctionReason()protected List<String>getRestrictedPackages()protected booleanisAllowedClass(ASTImportDeclaration node)protected booleanisContainingPackage(String pkg1, String pkg2)Objectvisit(ASTCompilationUnit node, Object data)Objectvisit(ASTImportDeclaration node, Object data)Objectvisit(ASTPackageDeclaration 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, visit, visit, visit, visit, visitAll
-
Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, asCtx, deepCopy, deepCopyValuesTo, end, 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, start, usesDFA, usesMultifile, usesRuleChain, usesTypeResolution
-
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, 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, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, isPropertyOverridden, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
-
-
-
Field Detail
-
PACKAGES_DESCRIPTOR
public static final PropertyDescriptor<List<String>> PACKAGES_DESCRIPTOR
-
CLASSES_DESCRIPTOR
public static final PropertyDescriptor<List<String>> CLASSES_DESCRIPTOR
-
-
Method Detail
-
visit
public Object visit(ASTCompilationUnit node, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
visit
public Object visit(ASTPackageDeclaration node, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
visit
public Object visit(ASTImportDeclaration node, Object data)
- Specified by:
visitin interfaceJavaParserVisitor- Overrides:
visitin classAbstractJavaRule
-
isAllowedClass
protected boolean isAllowedClass(ASTImportDeclaration node)
-
checksNothing
public boolean checksNothing()
-
dysfunctionReason
public String dysfunctionReason()
- Specified by:
dysfunctionReasonin interfacePropertySource- Overrides:
dysfunctionReasonin classAbstractPropertySource- See Also:
PropertySource.dysfunctionReason()
-
-