diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/junit/JUnitTestsShouldIncludeAssertRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/junit/JUnitTestsShouldIncludeAssertRule.java index 82e1c02a3c..f5443ecb45 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/junit/JUnitTestsShouldIncludeAssertRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/junit/JUnitTestsShouldIncludeAssertRule.java @@ -124,10 +124,13 @@ public class JUnitTestsShouldIncludeAssertRule extends AbstractJUnitRule { if (expression != null) { ASTPrimaryExpression pe = expression.getFirstChildOfType(ASTPrimaryExpression.class); if (pe != null) { - String img = pe.jjtGetChild(0).jjtGetChild(0).getImage(); - if (img != null && (img.startsWith("assert") || img.startsWith("fail") - || img.startsWith("Assert.assert") || img.startsWith("Assert.fail"))) { - return true; + Node name = pe.getFirstDescendantOfType(ASTName.class); + if (name != null) { + String img = name.getImage(); + if (img != null && (img.startsWith("assert") || img.startsWith("fail") + || img.startsWith("Assert.assert") || img.startsWith("Assert.fail"))) { + return true; + } } } } @@ -141,14 +144,13 @@ public class JUnitTestsShouldIncludeAssertRule extends AbstractJUnitRule { ASTPrimaryExpression pe = expression.getFirstChildOfType(ASTPrimaryExpression.class); if (pe != null) { - Node subChild = pe.jjtGetChild(0).jjtGetChild(0); - - // case of eg AllocationExpression - if (!(subChild instanceof ASTName)) { + Node name = pe.getFirstDescendantOfType(ASTName.class); + // case of an AllocationExpression + if (name == null) { return false; } - String img = subChild.getImage(); + String img = name.getImage(); if (img.indexOf(".") == -1) { return false; } @@ -159,7 +161,7 @@ public class JUnitTestsShouldIncludeAssertRule extends AbstractJUnitRule { } for (NameOccurrence occ : expectables.get(varname)) { - if (occ.getLocation() == pe.jjtGetChild(0).jjtGetChild(0) && img.startsWith(varname + ".expect")) { + if (occ.getLocation() == name && img.startsWith(varname + ".expect")) { return true; } } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/junit/xml/JUnitTestsShouldIncludeAssert.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/junit/xml/JUnitTestsShouldIncludeAssert.xml index 00d48dc19d..92416e75ba 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/junit/xml/JUnitTestsShouldIncludeAssert.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/junit/xml/JUnitTestsShouldIncludeAssert.xml @@ -328,5 +328,16 @@ public class BaseConsoleTest extends UART { } ]]> - + + #330 NPE accessing local field / method with this.XXX + 1 + +