View Javadoc
1 package net.sourceforge.pmd.rules.strictexception; 2 3 import net.sourceforge.pmd.AbstractRule; 4 import net.sourceforge.pmd.RuleContext; 5 import net.sourceforge.pmd.ast.ASTCatch; 6 import net.sourceforge.pmd.ast.ASTName; 7 import net.sourceforge.pmd.ast.ASTTryStatement; 8 import net.sourceforge.pmd.ast.ASTType; 9 10 /*** 11 * PMD rule which is going to find <code>catch</code> statements 12 * containing <code>throwable</code> as the type definition. 13 * <p> 14 * @author <a mailto:trondandersen@c2i.net>;Trond Andersen</a> 15 */ 16 public class AvoidCatchingThrowable extends AbstractRule { 17 18 19 public Object visit(ASTTryStatement astTryStatement, Object o) { 20 // Requires a catch statement 21 if (!astTryStatement.hasCatch()) { 22 return super.visit(astTryStatement, o); 23 } 24 25 /* Checking all catch statements */ 26 for (int i = 0; i < astTryStatement.getCatchBlocks().size(); i++) { 27 evaluateCatch((ASTCatch) astTryStatement.getCatchBlocks().get(i), (RuleContext) o); 28 } 29 return super.visit(astTryStatement, o); 30 } 31 32 /*** 33 * Checking the catch statement 34 * @param aCatch CatchBlock 35 * @param ruleContext 36 */ 37 private void evaluateCatch(ASTCatch aCatch, RuleContext ruleContext) { 38 ASTType type = (ASTType)aCatch.getFormalParameter().findChildrenOfType(ASTType.class).get(0); 39 ASTName name = (ASTName)type.findChildrenOfType(ASTName.class).get(0); 40 41 if (name.getImage().equals("Throwable")) { 42 ruleContext.getReport().addRuleViolation(createRuleViolation(ruleContext, name.getBeginLine())); 43 } 44 } 45 }

This page was automatically generated by Maven