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,net.sourceforge.pmd.lang.rule.ImmutableLanguage,net.sourceforge.pmd.properties.PropertySource,net.sourceforge.pmd.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 net.sourceforge.pmd.properties.PropertyDescriptor<List<String>>CLASSES_DESCRIPTORstatic net.sourceforge.pmd.properties.PropertyDescriptor<List<String>>PACKAGES_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, visitAll
-
Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule
addExample, addRuleChainVisit, addRuleChainVisit, addViolation, addViolation, addViolation, addViolationWithMessage, addViolationWithMessage, addViolationWithMessage, 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
-
-
-
-
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 interfacenet.sourceforge.pmd.properties.PropertySource- Overrides:
dysfunctionReasonin classnet.sourceforge.pmd.properties.AbstractPropertySource- See Also:
PropertySource.dysfunctionReason()
-
-