These are rules which find instances of high or inappropriate coupling between objects and packages.
Rule counts unique attributes, local variables and return types within an object. An amount higher than specified threshold can indicate a high degree of coupling.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.CouplingBetweenObjects
Here's an example of code that would trigger this rule:
import com.Blah; import org.Bar; import org.Bardo; public class Foo { private Blah var1; private Bar var2; //followed by many imports of unique objects void ObjectC doWork() { Bardo var55; ObjectA var44; ObjectZ var93; return something; } }
This rule has the following properties:
Name | Default value | Description |
---|---|---|
threshold | 20 | The unique type reporting threshold |
A high number of imports can indicate a high degree of coupling within an object. Rule counts the number of unique imports and reports a violation if the count is above the user defined threshold.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.ExcessiveImports
Here's an example of code that would trigger this rule:
import blah.blah.Baz; import blah.blah.Bif; // 18 others from the same package elided public class Foo { public void doWork() {} }
This rule has the following properties:
Name | Default value | Description |
---|---|---|
minimum | 30 | The import count reporting threshold |
Avoid using implementation types (i.e., HashSet); use the interface (i.e, Set) instead
This rule is defined by the following Java class: net.sourceforge.pmd.rules.design.LooseCoupling
Here's an example of code that would trigger this rule:
import java.util.*; public class Bar { // Use List instead private ArrayList list = new ArrayList(); // Use Set instead public HashSet getFoo() { return new HashSet(); } }