diff --git a/pmd-java/src/main/resources/rulesets/java/design.xml b/pmd-java/src/main/resources/rulesets/java/design.xml index 1621f5df9da..cf03f342740 100644 --- a/pmd-java/src/main/resources/rulesets/java/design.xml +++ b/pmd-java/src/main/resources/rulesets/java/design.xml @@ -1949,4 +1949,50 @@ public final class Foo { + + +Avoid constants in interfaces. Interfaces should define types, constants are implementation details +better placed in classes or enums. See Effective Java, item 19. + + 3 + + + + + + + + + + + + diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java index 119f833a73b..4e5e2f0b15f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java @@ -73,5 +73,6 @@ public void setUp() { addRule(RULESET, "UseNotifyAllInsteadOfNotify"); addRule(RULESET, "UseUtilityClass"); addRule(RULESET, "UseVarargs"); + addRule(RULESET, "ConstantsInInterface"); } } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ConstantsInInterface.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ConstantsInInterface.xml new file mode 100644 index 00000000000..ccf64ef6145 --- /dev/null +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/ConstantsInInterface.xml @@ -0,0 +1,45 @@ + + + + + 4 + + + + + false + 1 + + + + + true + 0 + + +