From 83f8f1b4108a3d021b04d9e37c3c32cb6cab2dcc Mon Sep 17 00:00:00 2001 From: Rishabh Deep Singh Date: Wed, 5 Dec 2018 00:26:18 +0530 Subject: [PATCH] Issue pmd#1035: ReturnFromFinallyBlock false-positives. --- docs/pages/pmd/rules/java/errorprone.md | 2 +- .../resources/category/java/errorprone.xml | 3 +- .../errorprone/xml/ReturnFromFinallyBlock.xml | 59 +++++++++++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/docs/pages/pmd/rules/java/errorprone.md b/docs/pages/pmd/rules/java/errorprone.md index c67c746c21..946fde9752 100644 --- a/docs/pages/pmd/rules/java/errorprone.md +++ b/docs/pages/pmd/rules/java/errorprone.md @@ -2790,7 +2790,7 @@ Avoid returning from a finally block, this can discard exceptions. **This rule is defined by the following XPath expression:** ``` xpath -//FinallyStatement//ReturnStatement +//FinallyStatement//ReturnStatement except //FinallyStatement//(MethodDeclaration|LambdaExpression)//ReturnStatement ``` **Example(s):** diff --git a/pmd-java/src/main/resources/category/java/errorprone.xml b/pmd-java/src/main/resources/category/java/errorprone.xml index 93930f8694..bad84763b5 100644 --- a/pmd-java/src/main/resources/category/java/errorprone.xml +++ b/pmd-java/src/main/resources/category/java/errorprone.xml @@ -2666,8 +2666,9 @@ Avoid returning from a finally block, this can discard exceptions. 3 + - //FinallyStatement//ReturnStatement + //FinallyStatement//ReturnStatement except //FinallyStatement//(MethodDeclaration|LambdaExpression)//ReturnStatement diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml index 6a0c3a8795..a6d71ae83a 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/ReturnFromFinallyBlock.xml @@ -57,4 +57,63 @@ public class Foo { } ]]> + + + 0 + + + + + 0 + untracked = serviceExecutionTracker.untrackMatchingEntries(e -> { + ServiceExecutionIdentifiers ids = e.getIdentifiers(); + Long execBqiId = (ids == null) ? null : ids.getBqiId(); + return Objects.equals(bqiId, execBqiId); + }); + untracked.forEach(e -> logger.info("overwriteLastBqi(bqId={}, bqiId={}) untracked {}", bqId, bqiId, e)); + } + } +} + ]]> + + + + 0 + { return i + 1; }).forEach(i -> System.out.println(i)); + } + } +} + ]]> +