From aa55a0108c5d6eccc64bdbd91c7e8f1494d7dfb7 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sat, 27 Jul 2019 10:27:18 +0200 Subject: [PATCH] [java] CloseResource: ignore java.io.CharArrayWriter by default Refs #1928 --- docs/pages/release_notes.md | 4 ++-- .../rule/errorprone/CloseResourceRule.java | 3 ++- .../rule/errorprone/xml/CloseResource.xml | 24 +++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 78cf620b7c..33624df787 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -31,8 +31,8 @@ Being based on a proper Antlr grammar, CPD can: #### Modified Rules -* The Java rule {% rule "java/errorprone/CloseResource" %} (`java-errorprone`) now ignores by default - `java.io.ByteArrayInputStream`. Such streams do not need to be closed. +* The Java rule {% rule "java/errorprone/CloseResource" %} (`java-errorprone`) ignores now by default + `java.io.ByteArrayInputStream` and `java.io.CharArrayWriter`. Such streams/writers do not need to be closed. * The Java rule {% rule "java/errorprone/MissingStaticMethodInNonInstantiatableClass" %} (`java-errorprone`) has now the new property `annotations`. diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/CloseResourceRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/CloseResourceRule.java index a3c9740f56..a9cad8b0ac 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/CloseResourceRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/CloseResourceRule.java @@ -88,7 +88,8 @@ public class CloseResourceRule extends AbstractJavaRule { private static final PropertyDescriptor> ALLOWED_RESOURCE_TYPES = stringListProperty("allowedResourceTypes") .desc("Exact class names that do not need to be closed") - .defaultValues("java.io.ByteArrayOutputStream", "java.io.ByteArrayInputStream", "java.io.StringWriter") + .defaultValues("java.io.ByteArrayOutputStream", "java.io.ByteArrayInputStream", "java.io.StringWriter", + "java.io.CharArrayWriter") .build(); diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/CloseResource.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/CloseResource.xml index 5f8c0beccc..008b5521b0 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/CloseResource.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/CloseResource.xml @@ -876,6 +876,30 @@ public class CloseResourceWithExceptions { ]]> + + CharArrayWriter does not need closing + 0 + + + A custom StringWriter does need closing 1