1 package net.sourceforge.pmd.rules.basic;
2
3 import net.sourceforge.pmd.AbstractRule;
4 import net.sourceforge.pmd.ast.ASTBlock;
5 import net.sourceforge.pmd.ast.ASTBlockStatement;
6 import net.sourceforge.pmd.ast.ASTMethodDeclaration;
7 import net.sourceforge.pmd.ast.ASTReturnStatement;
8 import net.sourceforge.pmd.ast.ASTStatement;
9
10 public class UnnecessaryReturn extends AbstractRule {
11
12 public Object visit(ASTMethodDeclaration node, Object data) {
13
14 if (node.getResultType().isVoid()) {
15 super.visit(node, data);
16 }
17 return data;
18 }
19
20 public Object visit(ASTReturnStatement node, Object data) {
21 if (node.jjtGetParent().getClass().equals(ASTStatement.class) && node.jjtGetParent().jjtGetParent().getClass().equals(ASTBlockStatement.class) && node.jjtGetParent().jjtGetParent().jjtGetParent().getClass().equals(ASTBlock.class)
22 && node.jjtGetParent().jjtGetParent().jjtGetParent().jjtGetParent().getClass().equals(ASTMethodDeclaration.class)) {
23 addViolation(data, node);
24 }
25 return data;
26 }
27
28 }