View Javadoc
1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.rules.design; 5 6 import net.sourceforge.pmd.AbstractRule; 7 import net.sourceforge.pmd.RuleContext; 8 import net.sourceforge.pmd.ast.ASTInterfaceDeclaration; 9 import net.sourceforge.pmd.ast.ASTMethodDeclaration; 10 import net.sourceforge.pmd.ast.ASTReturnStatement; 11 import net.sourceforge.pmd.ast.SimpleNode; 12 13 import java.util.ArrayList; 14 import java.util.Iterator; 15 import java.util.List; 16 17 public class OnlyOneReturnRule extends AbstractRule { 18 19 public Object visit(ASTInterfaceDeclaration node, Object data) { 20 return data; 21 } 22 23 public Object visit(ASTMethodDeclaration node, Object data) { 24 if (node.isAbstract()) { 25 return data; 26 } 27 28 List returnNodes = new ArrayList(); 29 node.findChildrenOfType(ASTReturnStatement.class, returnNodes, false); 30 if (returnNodes.size() > 1) { 31 RuleContext ctx = (RuleContext) data; 32 for (Iterator i = returnNodes.iterator(); i.hasNext();) { 33 SimpleNode problem = (SimpleNode) i.next(); 34 // skip the last one, it's OK 35 if (!i.hasNext()) { 36 continue; 37 } 38 ctx.getReport().addRuleViolation(createRuleViolation(ctx, problem.getBeginLine())); 39 } 40 } 41 return data; 42 } 43 44 }

This page was automatically generated by Maven