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.sample
org.sample.impl
org.sample.util
org.sample.SampleInterface
.This rule can be used to ensure that all classes within the
org.sample
package and its sub-packages are not used outside of theorg.sample
package hierarchy. Further, the only allowed usage outside of a class in theorg.sample
hierarchy would be viaorg.sample.SampleInterface
.
-
-
Field Summary
Fields Modifier and Type Field Description static net.sourceforge.pmd.properties.StringMultiProperty
CLASSES_DESCRIPTOR
static net.sourceforge.pmd.properties.StringMultiProperty
PACKAGES_DESCRIPTOR
-
Constructor Summary
Constructors Constructor Description LoosePackageCouplingRule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
checksNothing()
java.lang.String
dysfunctionReason()
protected java.util.List<java.lang.String>
getRestrictedPackages()
protected boolean
isAllowedClass(ASTImportDeclaration node)
protected boolean
isContainingPackage(java.lang.String pkg1, java.lang.String pkg2)
java.lang.Object
visit(ASTCompilationUnit node, java.lang.Object data)
java.lang.Object
visit(ASTImportDeclaration node, java.lang.Object data)
java.lang.Object
visit(ASTPackageDeclaration node, java.lang.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, visitAll
-
Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource
copyPropertyDescriptors, copyPropertyValues, definePropertyDescriptor, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, ignoredProperties, setProperty, setProperty, useDefaultValueFor, usesDefaultValues
-
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, 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
-
-
-
-
Method Detail
-
visit
public java.lang.Object visit(ASTCompilationUnit node, java.lang.Object data)
- Specified by:
visit
in interfaceJavaParserVisitor
- Overrides:
visit
in classAbstractJavaRule
-
visit
public java.lang.Object visit(ASTPackageDeclaration node, java.lang.Object data)
- Specified by:
visit
in interfaceJavaParserVisitor
- Overrides:
visit
in classAbstractJavaRule
-
visit
public java.lang.Object visit(ASTImportDeclaration node, java.lang.Object data)
- Specified by:
visit
in interfaceJavaParserVisitor
- Overrides:
visit
in classAbstractJavaRule
-
getRestrictedPackages
protected java.util.List<java.lang.String> getRestrictedPackages()
-
isContainingPackage
protected boolean isContainingPackage(java.lang.String pkg1, java.lang.String pkg2)
-
isAllowedClass
protected boolean isAllowedClass(ASTImportDeclaration node)
-
checksNothing
public boolean checksNothing()
-
dysfunctionReason
public java.lang.String dysfunctionReason()
- Specified by:
dysfunctionReason
in interfacenet.sourceforge.pmd.properties.PropertySource
- Overrides:
dysfunctionReason
in classnet.sourceforge.pmd.properties.AbstractPropertySource
- See Also:
PropertySource.dysfunctionReason()
-
-