diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index f8d40f32d5..89f5e269a4 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -23,6 +23,8 @@ This is a bug fixing release. * apex-errorprone * [#792](https://github.com/pmd/pmd/issues/792): \[apex] AvoidDirectAccessTriggerMap incorrectly detects array access in classes +* apex-security + * [#788](https://github.com/pmd/pmd/issues/788): \[apex] Method chaining breaks ApexCRUDViolation * java-design * [#785](https://github.com/pmd/pmd/issues/785): \[java] NPE in DataClass rule @@ -31,3 +33,4 @@ This is a bug fixing release. ### External Contributions * [#796](https://github.com/pmd/pmd/pull/796): \[apex] AvoidDirectAccessTriggerMap incorrectly detects array access in classes - [Robert Sösemann](https://github.com/up2go-rsoesemann) +* [#799](https://github.com/pmd/pmd/pull/799): \[apex] Method chaining breaks ApexCRUDViolation - [Robert Sösemann](https://github.com/up2go-rsoesemann) diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/security/ApexCRUDViolationRule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/security/ApexCRUDViolationRule.java index 2d348857d2..1e32beb021 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/security/ApexCRUDViolationRule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/security/ApexCRUDViolationRule.java @@ -322,7 +322,7 @@ public class ApexCRUDViolationRule extends AbstractApexRule { private boolean isLastMethodName(final ASTMethodCallExpression methodNode, final String className, final String methodName) { final ASTReferenceExpression reference = methodNode.getFirstChildOfType(ASTReferenceExpression.class); - if (reference.getNode().getNames().size() > 0) { + if (reference != null && reference.getNode().getNames().size() > 0) { if (reference.getNode().getNames().get(reference.getNode().getNames().size() - 1).getValue() .equalsIgnoreCase(className) && Helper.isMethodName(methodNode, methodName)) { return true; diff --git a/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/security/xml/ApexCRUDViolation.xml b/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/security/xml/ApexCRUDViolation.xml index ce3933613c..2c7a4768b6 100644 --- a/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/security/xml/ApexCRUDViolation.xml +++ b/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/security/xml/ApexCRUDViolation.xml @@ -812,6 +812,18 @@ public class Foo { public list bar; public map baz; } +]]> + + + + Regression issue #799 detection + 0 +