diff --git a/pmd/etc/changelog.txt b/pmd/etc/changelog.txt index 4960ebdc39..9113e85a57 100644 --- a/pmd/etc/changelog.txt +++ b/pmd/etc/changelog.txt @@ -1,6 +1,7 @@ ??? - 0.2: Added IfElseStmtsMustUseBracesRule Modified command line interface to accept a rule set +Fixed bug in EmptyCatchBlockRule June 25 2002 - 0.1: Initial release diff --git a/pmd/etc/go.bat b/pmd/etc/go.bat index bcb0592052..a230e25c2b 100755 --- a/pmd/etc/go.bat +++ b/pmd/etc/go.bat @@ -2,4 +2,4 @@ set MAIN=net.sourceforge.pmd.PMD set TEST_FILE=c:\\data\\pmd\\pmd\\test-data\\%1%.java -java %MAIN% %TEST_FILE% %2% +java %MAIN% %TEST_FILE% xml general diff --git a/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java b/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java index 46b473ac1e..b950752e1c 100644 --- a/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java +++ b/pmd/regress/test/net/sourceforge/pmd/FunctionalTest.java @@ -85,6 +85,11 @@ public class FunctionalTest extends TestCase{ assertEquals(new EmptyCatchBlockRule(), ((RuleViolation)report.violationsInCurrentFile().next()).getRule()); } + public void testEmptyCatchBlock2() { + Report report = process("EmptyCatchBlock2.java"); + assertTrue(report.currentFileHasNoViolations()); + } + public void testUnnecessaryTemporaries() { Report report = process("UnnecessaryTemporary.java"); assertEquals(6, report.countViolationsInCurrentFile()); diff --git a/pmd/src/net/sourceforge/pmd/rules/EmptyCatchBlockRule.java b/pmd/src/net/sourceforge/pmd/rules/EmptyCatchBlockRule.java index 9ca983240e..3b6b7166c2 100644 --- a/pmd/src/net/sourceforge/pmd/rules/EmptyCatchBlockRule.java +++ b/pmd/src/net/sourceforge/pmd/rules/EmptyCatchBlockRule.java @@ -7,17 +7,19 @@ package net.sourceforge.pmd.rules; import net.sourceforge.pmd.ast.ASTBlock; import net.sourceforge.pmd.ast.ASTTryStatement; +import net.sourceforge.pmd.ast.ASTBlockStatement; +import net.sourceforge.pmd.ast.SimpleNode; import net.sourceforge.pmd.*; public class EmptyCatchBlockRule extends AbstractRule implements Rule { public String getDescription() {return "Avoid empty catch blocks";} - public Object visit(ASTBlock node, Object data){ - if ((node.jjtGetParent() instanceof ASTTryStatement) && node.jjtGetNumChildren()==0) { + public Object visit(ASTTryStatement node, Object data){ + ASTBlock catchBlock = (ASTBlock)node.jjtGetChild(2); + if (catchBlock.jjtGetNumChildren() == 0) { (((RuleContext)data).getReport()).addRuleViolation(new RuleViolation(this, node.getBeginLine())); } - return super.visit(node, data); } }