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();
}
}