diff --git a/pmd/etc/changelog.txt b/pmd/etc/changelog.txt index 823ad68d8c..23d9bafc08 100644 --- a/pmd/etc/changelog.txt +++ b/pmd/etc/changelog.txt @@ -1,5 +1,6 @@ ????? ??, 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 f9b6d7c9d3..ffb76b4bb8 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 @@ -425,4 +425,26 @@ class MultiCatch { ]]> + + #943 PreserveStackTrace false positive if a StringBuffer exists + 0 + +