From ac1b7652ddd5f4e01eb7e3e5e58f9d22900229a0 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 20 Dec 2016 20:37:53 +0100 Subject: [PATCH] Sonar false positives for resource leaks --- src/main/org/apache/tools/ant/Main.java | 5 ++++- src/main/org/apache/tools/ant/taskdefs/Truncate.java | 4 ++-- .../org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java | 2 +- .../org/apache/tools/ant/taskdefs/optional/PropertyFile.java | 2 +- .../apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java | 3 ++- .../tools/ant/taskdefs/optional/jdepend/JDependTask.java | 2 +- .../tools/ant/types/selectors/ContainsRegexpSelector.java | 2 +- .../apache/tools/ant/types/selectors/ContainsSelector.java | 4 ++-- src/main/org/apache/tools/ant/util/FileUtils.java | 2 +- src/main/org/apache/tools/zip/ZipFile.java | 4 +++- 10 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java index edce9c1af..81e4ef147 100644 --- a/src/main/org/apache/tools/ant/Main.java +++ b/src/main/org/apache/tools/ant/Main.java @@ -355,7 +355,10 @@ public class Main implements AntMain { try { final File logFile = new File(args[i + 1]); i++; - logTo = new PrintStream(new FileOutputStream(logFile)); + // life-cycle of FileOutputStream is controlled by + // logTo which becomes "out" and is closed in + // handleLogfile + logTo = new PrintStream(new FileOutputStream(logFile)); //NOSONAR isLogFileUsed = true; } catch (final IOException ioe) { final String msg = "Cannot write on the specified log file. " diff --git a/src/main/org/apache/tools/ant/taskdefs/Truncate.java b/src/main/org/apache/tools/ant/taskdefs/Truncate.java index 6f43c0503..cb8fd4a1c 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Truncate.java +++ b/src/main/org/apache/tools/ant/taskdefs/Truncate.java @@ -167,7 +167,7 @@ public class Truncate extends Task { } RandomAccessFile raf = null; try { - raf = new RandomAccessFile(f, READ_WRITE); + raf = new RandomAccessFile(f, READ_WRITE); //NOSONAR } catch (Exception e) { throw new BuildException("Could not open " + f + " for writing", e); } @@ -202,4 +202,4 @@ public class Truncate extends Task { return path; } -} \ No newline at end of file +} diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java index a90bcc01a..6f17402d8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsTagDiff.java @@ -299,7 +299,7 @@ public class CvsTagDiff extends AbstractCvsTask { BufferedReader reader = null; try { - reader = new BufferedReader(new FileReader(tmpFile)); + reader = new BufferedReader(new FileReader(tmpFile)); //NOSONAR // entries are of the form: //CVS 1.11 diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java index 162cab1a4..7c778dae9 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java @@ -260,7 +260,7 @@ public class PropertyFile extends Task { throw new BuildException(x, getLocation()); } try { - OutputStream os = new FileOutputStream(propertyfile); + OutputStream os = new FileOutputStream(propertyfile); //NOSONAR try { try { os.write(baos.toByteArray()); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java index 41e90d0f0..984fc3785 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/IPlanetEjbc.java @@ -727,7 +727,8 @@ public class IPlanetEjbc { } else { location = (String) fileDtds.get(publicId); if (location != null) { - inputStream = new FileInputStream(location); + // closed when the InputSource is closed + inputStream = new FileInputStream(location); //NOSONAR } } } catch (IOException e) { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java index 21f03fe7d..9d2e9ae68 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/jdepend/JDependTask.java @@ -459,7 +459,7 @@ public class JDependTask extends Task { PrintWriter pw = null; if (getOutputFile() != null) { try { - fw = new FileWriter(getOutputFile().getPath()); + fw = new FileWriter(getOutputFile().getPath()); //NOSONAR } catch (IOException e) { String msg = "JDepend Failed when creating the output file: " + e.getMessage(); diff --git a/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java b/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java index 4da3b6ffe..334f37ec9 100644 --- a/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java @@ -184,7 +184,7 @@ public class ContainsRegexpSelector extends BaseExtendSelector } try { - in = new BufferedReader(new InputStreamReader(r.getInputStream())); + in = new BufferedReader(new InputStreamReader(r.getInputStream())); //NOSONAR } catch (Exception e) { throw new BuildException("Could not get InputStream from " + r.toLongString(), e); diff --git a/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java b/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java index 6dabaf4cb..a1004a8f2 100644 --- a/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java +++ b/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java @@ -187,9 +187,9 @@ public class ContainsSelector extends BaseExtendSelector implements ResourceSele BufferedReader in = null; try { if (encoding != null) { - in = new BufferedReader(new InputStreamReader(r.getInputStream(), encoding)); + in = new BufferedReader(new InputStreamReader(r.getInputStream(), encoding)); //NOSONAR } else { - in = new BufferedReader(new InputStreamReader(r.getInputStream())); + in = new BufferedReader(new InputStreamReader(r.getInputStream())); //NOSONAR } } catch (Exception e) { throw new BuildException("Could not get InputStream from " diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java index bcef5ecf2..c2a60ed6f 100644 --- a/src/main/org/apache/tools/ant/util/FileUtils.java +++ b/src/main/org/apache/tools/ant/util/FileUtils.java @@ -1708,7 +1708,7 @@ public class FileUtils { */ public String getDefaultEncoding() { InputStreamReader is = new InputStreamReader( - new InputStream() { + new InputStream() { //NOSONAR public int read() { return -1; } diff --git a/src/main/org/apache/tools/zip/ZipFile.java b/src/main/org/apache/tools/zip/ZipFile.java index f34231040..1be53cdcc 100644 --- a/src/main/org/apache/tools/zip/ZipFile.java +++ b/src/main/org/apache/tools/zip/ZipFile.java @@ -370,8 +370,10 @@ public class ZipFile implements Closeable { final OffsetEntry offsetEntry = ((Entry) ze).getOffsetEntry(); ZipUtil.checkRequestedFeatures(ze); final long start = offsetEntry.dataOffset; + // doesn't get closed if the method is not supported, but + // doesn't hold any resources either final BoundedInputStream bis = - new BoundedInputStream(start, ze.getCompressedSize()); + new BoundedInputStream(start, ze.getCompressedSize()); //NOSONAR switch (ze.getMethod()) { case ZipEntry.STORED: return bis;