diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/style/AvoidLogicInTriggerRule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/style/AvoidLogicInTriggerRule.java index 097491940b..25592c291f 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/style/AvoidLogicInTriggerRule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/style/AvoidLogicInTriggerRule.java @@ -3,11 +3,11 @@ */ package net.sourceforge.pmd.lang.apex.rule.style; +import java.util.List; + import net.sourceforge.pmd.lang.apex.ast.ASTBlockStatement; import net.sourceforge.pmd.lang.apex.ast.ASTUserTrigger; -import net.sourceforge.pmd.lang.apex.ast.ApexNode; import net.sourceforge.pmd.lang.apex.rule.AbstractApexRule; -import net.sourceforge.pmd.lang.ast.Node; public class AvoidLogicInTriggerRule extends AbstractApexRule { @@ -18,24 +18,13 @@ public class AvoidLogicInTriggerRule extends AbstractApexRule { } @Override - public Object visit(ASTBlockStatement node, Object data) { - if (insideTrigger(node)) { + public Object visit(ASTUserTrigger node, Object data) { + List blockStatements = node.findDescendantsOfType(ASTBlockStatement.class); + + if( !blockStatements.isEmpty()){ addViolation(data, node); } - + return data; } - - private boolean insideTrigger(ApexNode node) { - Node n = node.jjtGetParent(); - - while (n != null) { - if (n instanceof ASTUserTrigger) { - return true; - } - n = n.jjtGetParent(); - } - - return false; - } } diff --git a/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/style/xml/AvoidLogicInTrigger.xml b/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/style/xml/AvoidLogicInTrigger.xml index b9d9878035..0ae245e1de 100644 --- a/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/style/xml/AvoidLogicInTrigger.xml +++ b/pmd-apex/src/test/resources/net/sourceforge/pmd/lang/apex/rule/style/xml/AvoidLogicInTrigger.xml @@ -27,6 +27,16 @@ trigger AccountTrigger on Account (after insert, after update) { } } + + for(Account a : Trigger.new){ + if(Trigger.isInsert){ + + } + + if(Trigger.isDelete){ + + } + } } ]]>