diff --git a/pmd-java/src/main/resources/rulesets/java/clone.xml b/pmd-java/src/main/resources/rulesets/java/clone.xml index 766f713df3..959e785a63 100644 --- a/pmd-java/src/main/resources/rulesets/java/clone.xml +++ b/pmd-java/src/main/resources/rulesets/java/clone.xml @@ -172,4 +172,49 @@ public class Foo implements Cloneable { ]]> + + + +The java Manual says "By convention, classes that implement this interface should override +Object.clone (which is protected) with a public method." + + 3 + + + + + + + + + + \ No newline at end of file diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/clone/CloneRulesTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/clone/CloneRulesTest.java index a45ba1e2ab..c8ee65451a 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/clone/CloneRulesTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/clone/CloneRulesTest.java @@ -15,5 +15,6 @@ public class CloneRulesTest extends SimpleAggregatorTst { addRule(RULESET, "CloneThrowsCloneNotSupportedException"); addRule(RULESET, "ProperCloneImplementation"); addRule(RULESET, "CloneMethodReturnTypeMustMatchClassName"); + addRule(RULESET, "CloneMethodMustBePublic"); } } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/clone/xml/CloneMethodMustBePublic.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/clone/xml/CloneMethodMustBePublic.xml new file mode 100644 index 0000000000..b12b2b2482 --- /dev/null +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/clone/xml/CloneMethodMustBePublic.xml @@ -0,0 +1,110 @@ + + + + + + + 1 + + + + + + + + + + 1 + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + + + + + + 0 + + + + + \ No newline at end of file