These are rules which find instances of high or inappropriate coupling between objects and packages.
This rule counts unique attributes, local variables and return types within an object. A number 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(); } }