diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java index 79a85447cb..1f894e5052 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java @@ -167,9 +167,14 @@ public class UnnecessaryModifierRule extends AbstractJavaRule { reportUnnecessaryModifiers(data, node, Modifier.PUBLIC, "members of " + getPrintableNodeKind(node.getEnclosingTypeDeclaration()) + " types are implicitly public"); } - if ((node.isInterface() || isParentInterfaceOrAnnotation) && node.isStatic()) { - // a static interface or class nested within an interface - reportUnnecessaryModifiers(data, node, Modifier.STATIC, "types nested within an interface type are implicitly static"); + if (node.isStatic()) { + if (node.isInterface()) { + // a static interface + reportUnnecessaryModifiers(data, node, Modifier.STATIC, "member interfaces are implicitly static"); + } else if (isParentInterfaceOrAnnotation) { + // a type nested within an interface + reportUnnecessaryModifiers(data, node, Modifier.STATIC, "types nested within an interface type are implicitly static"); + } } return data; diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml index 936436a89e..ab2dd7cb33 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml @@ -680,7 +680,7 @@ enum Foo { Static Modifier on interface 1 - Unnecessary modifier 'static' on interface 'Bar': types nested within an interface type are implicitly static + Unnecessary modifier 'static' on interface 'Bar': member interfaces are implicitly static + + Static Modifier on interface + 1 + + Unnecessary modifier 'static' on class 'Foo': types nested within an interface type are implicitly static + + +