From be4c1adce6b6f3d6efc2d28fbe3ecb57851fa804 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sat, 30 Mar 2013 10:20:43 +0100 Subject: [PATCH] pmd: fix #943 PreserveStackTrace false positive if a StringBuffer exists --- pmd/etc/changelog.txt | 1 + .../rule/design/PreserveStackTraceRule.java | 10 +++++---- .../rule/design/xml/PreserveStackTrace.xml | 22 +++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/pmd/etc/changelog.txt b/pmd/etc/changelog.txt index 7ddb978540..9653963ff0 100644 --- a/pmd/etc/changelog.txt +++ b/pmd/etc/changelog.txt @@ -15,6 +15,7 @@ New Java rule: ????? ??, 2013 - 5.0.3: +Fixed bug 943: PreserveStackTrace false positive if a StringBuffer exists Fixed bug 945: PMD generates RuleSets it cannot read. Fixed bug 958: Intermittent NullPointerException while loading XPath node attributes Fixed bug 968: Issues with JUnit4 @Test annotation with expected exception (Thanks to Yiannis Paschalidis) diff --git a/pmd/src/main/java/net/sourceforge/pmd/lang/java/rule/design/PreserveStackTraceRule.java b/pmd/src/main/java/net/sourceforge/pmd/lang/java/rule/design/PreserveStackTraceRule.java index 2bd9f51360..b6cd8d8eb7 100644 --- a/pmd/src/main/java/net/sourceforge/pmd/lang/java/rule/design/PreserveStackTraceRule.java +++ b/pmd/src/main/java/net/sourceforge/pmd/lang/java/rule/design/PreserveStackTraceRule.java @@ -74,10 +74,12 @@ public class PreserveStackTraceRule extends AbstractJavaRule { if ((child instanceof ASTName) && !target.equals(child.getImage()) && !child.hasImageEqualTo(target + FILL_IN_STACKTRACE)) { Map> vars = ((ASTName) child).getScope().getVariableDeclarations(); for (VariableNameDeclaration decl: vars.keySet()) { - args = decl.getNode().jjtGetParent() - .getFirstDescendantOfType(ASTArgumentList.class); - if (args != null) { - ck(data, target, throwStatement, args); + if (decl.getImage().equals(child.getImage())) { + args = decl.getNode().jjtGetParent() + .getFirstDescendantOfType(ASTArgumentList.class); + if (args != null) { + ck(data, target, throwStatement, args); + } } } } else if (child instanceof ASTClassOrInterfaceType){ diff --git a/pmd/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/PreserveStackTrace.xml b/pmd/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/PreserveStackTrace.xml index cc1d7f1ed6..c79db53dd4 100644 --- a/pmd/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/PreserveStackTrace.xml +++ b/pmd/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/PreserveStackTrace.xml @@ -427,4 +427,26 @@ class MultiCatch { java 1.7 + + #943 PreserveStackTrace false positive if a StringBuffer exists + 0 + +