diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AvoidReassigningLoopVariablesRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AvoidReassigningLoopVariablesRule.java index cd67b9b211..06839b51b5 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AvoidReassigningLoopVariablesRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AvoidReassigningLoopVariablesRule.java @@ -207,7 +207,7 @@ public class AvoidReassigningLoopVariablesRule extends AbstractOptimizationRule * Add a violation, if the node image is one of the loop variables. */ private void checkVariable(Object data, Set loopVariables, AbstractNode node) { - if (loopVariables.contains(node.getImage())) { + if (node != null && loopVariables.contains(node.getImage())) { addViolation(data, node, node.getImage()); } } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/AvoidReassigningLoopVariables.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/AvoidReassigningLoopVariables.xml index 8dffd3f0a7..a875c6dca8 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/AvoidReassigningLoopVariables.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/AvoidReassigningLoopVariables.xml @@ -35,6 +35,36 @@ public class Foo { ]]> + + no violation: incremented other variable + 0 + + + + + no violation: incremented field + 0 + + + violation: add to 'for' loop variable 1