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
+
+
+