This commit is contained in:
David Renz
2016-04-07 17:26:54 +02:00
parent da9c5c5f77
commit c6b31a8cfe
2 changed files with 6 additions and 2 deletions

View File

@@ -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();

View File

@@ -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 {