diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 7b65f09bea..487972b459 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -55,6 +55,8 @@ at . * java-bestpractices * [#783](https://github.com/pmd/pmd/issues/783): \[java] GuardLogStatement regression * [#800](https://github.com/pmd/pmd/issues/800): \[java] ForLoopCanBeForeach NPE when looping on `this` object +* java-codestyle + * [#817](https://github.com/pmd/pmd/issues/817): \[java] UnnecessaryModifierRule crashes on valid code * java-design * [#785](https://github.com/pmd/pmd/issues/785): \[java] NPE in DataClass rule 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 98501b7e7e..c615cbd06b 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 @@ -150,9 +150,11 @@ public class UnnecessaryModifierRule extends AbstractJavaRule { private boolean isSafeVarargs(final ASTMethodDeclaration node) { for (final ASTAnnotation annotation : node.jjtGetParent().findChildrenOfType(ASTAnnotation.class)) { final Node childAnnotation = annotation.jjtGetChild(0); - if (childAnnotation instanceof ASTMarkerAnnotation - && SafeVarargs.class.isAssignableFrom(((ASTMarkerAnnotation) childAnnotation).getType())) { - return true; + if (childAnnotation instanceof ASTMarkerAnnotation) { + final ASTMarkerAnnotation marker = (ASTMarkerAnnotation) childAnnotation; + if (marker.getType() != null && SafeVarargs.class.isAssignableFrom(marker.getType())) { + return true; + } } } 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 78d3292930..bfab48dd58 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 @@ -585,6 +585,16 @@ public class Foo { // do something on fw } } +} + ]]> + + + #817 [java] UnnecessaryModifierRule crashes on valid code + 0 +