forked from phoedos/pmd
Fixed #29
This commit is contained in:
@@ -16,7 +16,7 @@ public class AvoidSoqlInLoopsRule extends AbstractApexRule {
|
||||
|
||||
@Override
|
||||
public Object visit(ASTSoqlExpression node, Object data) {
|
||||
if (insideLoop(node) && parentNotReturn(node)) {
|
||||
if (insideLoop(node) && parentNotReturn(node) && parentNotForEach(node)) {
|
||||
addViolation(data, node);
|
||||
}
|
||||
return data;
|
||||
@@ -25,6 +25,10 @@ public class AvoidSoqlInLoopsRule extends AbstractApexRule {
|
||||
private boolean parentNotReturn(ASTSoqlExpression node) {
|
||||
return !(node.jjtGetParent() instanceof ASTReturnStatement);
|
||||
}
|
||||
|
||||
private boolean parentNotForEach(ASTSoqlExpression node) {
|
||||
return !(node.jjtGetParent() instanceof ASTForEachStatement);
|
||||
}
|
||||
|
||||
private boolean insideLoop(ASTSoqlExpression node) {
|
||||
Node n = node.jjtGetParent();
|
||||
|
@@ -88,7 +88,7 @@ public class Foo {
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>SOQL For Loops best practice: for loop iterate over Soql should be ignored</description>
|
||||
<description>#29 SOQL For Loops should not throw an Avoid Soql queries inside loops issue</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
public class Foo {
|
||||
|
Reference in New Issue
Block a user