diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java b/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java index b570edcbd6..76c54a23ab 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java @@ -13,7 +13,6 @@ import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.tools.ant.AntClassLoader; import org.apache.tools.ant.BuildException; @@ -240,12 +239,13 @@ public class PMDTaskImpl { Throwable cause = pmde.getCause(); if (cause != null) { - StringWriter strWriter = new StringWriter(); - PrintWriter printWriter = new PrintWriter(strWriter); - cause.printStackTrace(printWriter); - project.log(strWriter.toString(), Project.MSG_VERBOSE); - IOUtils.closeQuietly(printWriter); - + try (StringWriter strWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(strWriter)) { + cause.printStackTrace(printWriter); + project.log(strWriter.toString(), Project.MSG_VERBOSE); + } catch (IOException e) { + e.printStackTrace(); + } if (StringUtils.isNotBlank(cause.getMessage())) { project.log(cause.getMessage(), Project.MSG_VERBOSE); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/Benchmarker.java b/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/Benchmarker.java index 0bfc2f23d1..d200d351a5 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/Benchmarker.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/benchmark/Benchmarker.java @@ -15,7 +15,6 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import net.sourceforge.pmd.PMD; @@ -145,11 +144,8 @@ public final class Benchmarker { long start = System.currentTimeMillis(); for (DataSource dataSource : dataSources) { - InputStreamReader reader = new InputStreamReader(dataSource.getInputStream()); - try { + try (InputStreamReader reader = new InputStreamReader(dataSource.getInputStream())) { parser.parse(dataSource.getNiceFileName(false, null), reader); - } finally { - IOUtils.closeQuietly(reader); } } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AnyTokenizer.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AnyTokenizer.java index 275df80640..2e9745bb8e 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AnyTokenizer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AnyTokenizer.java @@ -9,8 +9,6 @@ import java.io.CharArrayReader; import java.io.IOException; import java.util.StringTokenizer; -import org.apache.commons.io.IOUtils; - /** * This class does a best-guess try-anything tokenization. * @@ -22,8 +20,7 @@ public class AnyTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { StringBuilder sb = sourceCode.getCodeBuffer(); - BufferedReader reader = new BufferedReader(new CharArrayReader(sb.toString().toCharArray())); - try { + try (BufferedReader reader = new BufferedReader(new CharArrayReader(sb.toString().toCharArray()))) { int lineNumber = 1; String line = reader.readLine(); while (line != null) { @@ -41,7 +38,6 @@ public class AnyTokenizer implements Tokenizer { } catch (IOException ignored) { ignored.printStackTrace(); } finally { - IOUtils.closeQuietly(reader); tokenEntries.add(TokenEntry.getEOF()); } } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/FileReporter.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/FileReporter.java index aa486a9d59..92744ee271 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/FileReporter.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/FileReporter.java @@ -12,8 +12,6 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.cpd.renderer.CPDRenderer; /** @@ -40,18 +38,9 @@ public class FileReporter { public void report(String content) throws ReportException { try { - Writer writer = null; - try { - OutputStream outputStream; - if (reportFile == null) { - outputStream = System.out; - } else { - outputStream = new FileOutputStream(reportFile); - } - writer = new BufferedWriter(new OutputStreamWriter(outputStream, encoding)); + try (OutputStream outputStream = reportFile == null ? System.out : new FileOutputStream(reportFile); + Writer writer = new BufferedWriter(new OutputStreamWriter(outputStream, encoding))) { writer.write(content); - } finally { - IOUtils.closeQuietly(writer); } } catch (IOException ioe) { throw new ReportException(ioe); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/dcd/graph/UsageGraphBuilder.java b/pmd-core/src/main/java/net/sourceforge/pmd/dcd/graph/UsageGraphBuilder.java index 954e7acee0..2af82d3c2f 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/dcd/graph/UsageGraphBuilder.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/dcd/graph/UsageGraphBuilder.java @@ -10,7 +10,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.apache.commons.io.IOUtils; import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.ClassReader; @@ -52,13 +51,10 @@ public class UsageGraphBuilder { if (classFilter.filter(className)) { if (!usageGraph.isClass(className)) { usageGraph.defineClass(className); - InputStream inputStream = this.getClass().getClassLoader() - .getResourceAsStream(classResourceName + ".class"); - ClassReader classReader = new ClassReader(inputStream); - try { + try (InputStream inputStream = this.getClass().getClassLoader() + .getResourceAsStream(classResourceName + ".class")) { + ClassReader classReader = new ClassReader(inputStream); classReader.accept(getNewClassVisitor(), 0); - } finally { - IOUtils.closeQuietly(inputStream); } } } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/dfa/report/ReportHTMLPrintVisitor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/dfa/report/ReportHTMLPrintVisitor.java index 4fe31734c2..61ab8eb4ee 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/dfa/report/ReportHTMLPrintVisitor.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/dfa/report/ReportHTMLPrintVisitor.java @@ -9,7 +9,6 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import net.sourceforge.pmd.PMD; @@ -45,9 +44,9 @@ public class ReportHTMLPrintVisitor extends ReportVisitor { * Writes the buffer to file. */ private void write(String filename, StringBuilder buf) throws IOException { - BufferedWriter bw = new BufferedWriter(new FileWriter(new File(baseDir + FILE_SEPARATOR + filename))); - bw.write(buf.toString(), 0, buf.length()); - IOUtils.closeQuietly(bw); + try (BufferedWriter bw = new BufferedWriter(new FileWriter(new File(baseDir + FILE_SEPARATOR + filename)))) { + bw.write(buf.toString(), 0, buf.length()); + } } /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextColorRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextColorRenderer.java index d83cf7fa19..f28df9dab3 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextColorRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextColorRenderer.java @@ -13,8 +13,6 @@ import java.io.Reader; import java.util.Iterator; import java.util.Map; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.RuleViolation; @@ -191,17 +189,13 @@ public class TextColorRenderer extends AbstractAccumulatingRenderer { */ private String getLine(String sourceFile, int line) { String code = null; - BufferedReader br = null; - try { - br = new BufferedReader(getReader(sourceFile)); + try (BufferedReader br = new BufferedReader(getReader(sourceFile))) { for (int i = 0; line > i; i++) { String txt = br.readLine(); code = txt == null ? "" : txt.trim(); } } catch (IOException ioErr) { ioErr.printStackTrace(); - } finally { - IOUtils.closeQuietly(br); } return code; } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/database/DBType.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/database/DBType.java index 27b7e6975d..56d8a978a0 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/database/DBType.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/database/DBType.java @@ -15,8 +15,6 @@ import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.commons.io.IOUtils; - /** * Encapsulate the settings needed to access database source code. * @@ -159,7 +157,6 @@ public class DBType { LOGGER.entering(DBType.class.getCanonicalName(), matchString); // Locale locale = Control.g; ResourceBundle resourceBundle = null; - InputStream stream = null; if (LOGGER.isLoggable(Level.FINEST)) { LOGGER.finest("class_path+" + System.getProperty("java.class.path")); @@ -170,12 +167,11 @@ public class DBType { * properties suffix File path without properties suffix Resource * without class prefix Resource with class prefix */ - try { - File propertiesFile = new File(matchString); - if (LOGGER.isLoggable(Level.FINEST)) { - LOGGER.finest("Attempting File no file suffix: " + matchString); - } - stream = new FileInputStream(propertiesFile); + File propertiesFile = new File(matchString); + if (LOGGER.isLoggable(Level.FINEST)) { + LOGGER.finest("Attempting File no file suffix: " + matchString); + } + try (InputStream stream = new FileInputStream(propertiesFile)) { resourceBundle = new PropertyResourceBundle(stream); propertiesSource = propertiesFile.getAbsolutePath(); LOGGER.finest("FileSystemWithoutExtension"); @@ -184,9 +180,8 @@ public class DBType { LOGGER.finest("notFoundOnFilesystemWithoutExtension"); LOGGER.finest("Attempting File with added file suffix: " + matchString + ".properties"); } - try { - File propertiesFile = new File(matchString + ".properties"); - stream = new FileInputStream(propertiesFile); + try (InputStream stream = new FileInputStream(propertiesFile)) { + propertiesFile = new File(matchString + ".properties"); resourceBundle = new PropertyResourceBundle(stream); propertiesSource = propertiesFile.getAbsolutePath(); LOGGER.finest("FileSystemWithExtension"); @@ -214,8 +209,6 @@ public class DBType { } } } - } finally { - IOUtils.closeQuietly(stream); } // Properties in this matched resource diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/designer/Designer.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/designer/Designer.java index c82c81353d..c3c683ec44 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/designer/Designer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/designer/Designer.java @@ -92,7 +92,6 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -992,12 +991,10 @@ public class Designer implements ClipboardOwner { } private void loadSettings() { - InputStream stream = null; - try { - File file = new File(SETTINGS_FILE_NAME); - if (file.exists()) { + File file = new File(SETTINGS_FILE_NAME); + if (file.exists()) { + try (InputStream stream = new FileInputStream(file)) { DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - stream = new FileInputStream(file); Document document = builder.parse(stream); Element settingsElement = document.getDocumentElement(); Element codeElement = (Element) settingsElement.getElementsByTagName("code").item(0); @@ -1018,15 +1015,13 @@ public class Designer implements ClipboardOwner { break; } } + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); } - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (SAXException e) { - e.printStackTrace(); - } finally { - IOUtils.closeQuietly(stream); } } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/util/database/DBTypeTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/util/database/DBTypeTest.java index 2e9dce0ee4..2bdd29465f 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/util/database/DBTypeTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/util/database/DBTypeTest.java @@ -11,7 +11,6 @@ import java.util.Map.Entry; import java.util.Properties; import java.util.ResourceBundle; -import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -39,17 +38,12 @@ public class DBTypeTest { includeProperties.putAll(testProperties); includeProperties.put("prop3", "include3"); - PrintStream printStream = null; - try { - absoluteFile = File.createTempFile("dbtypetest", ".properties"); - FileOutputStream fileOutputStream = new FileOutputStream(absoluteFile); - printStream = new PrintStream(fileOutputStream); - + absoluteFile = File.createTempFile("dbtypetest", ".properties"); + try (FileOutputStream fileOutputStream = new FileOutputStream(absoluteFile); + PrintStream printStream = new PrintStream(fileOutputStream)) { for (Entry entry : testProperties.entrySet()) { printStream.printf("%s=%s\n", entry.getKey(), entry.getValue()); } - } finally { - IOUtils.closeQuietly(printStream); } } diff --git a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java index 2f49579c06..b81450012b 100644 --- a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java +++ b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java @@ -10,8 +10,6 @@ import java.io.Reader; import java.io.StringReader; import java.util.Properties; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter; import net.sourceforge.pmd.cpd.token.TokenFilter; @@ -56,12 +54,9 @@ public class CPPTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { StringBuilder buffer = sourceCode.getCodeBuffer(); - Reader reader = null; - try { + try (Reader reader = IOUtil.skipBOM(new StringReader(maybeSkipBlocks(buffer.toString())))) { LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(CppLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - reader = new StringReader(maybeSkipBlocks(buffer.toString())); - reader = IOUtil.skipBOM(reader); final TokenFilter tokenFilter = new JavaCCTokenFilter( languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader)); @@ -73,16 +68,10 @@ public class CPPTokenizer implements Tokenizer { } tokenEntries.add(TokenEntry.getEOF()); System.err.println("Added " + sourceCode.getFileName()); - } catch (TokenMgrError err) { + } catch (TokenMgrError | IOException err) { err.printStackTrace(); System.err.println("Skipping " + sourceCode.getFileName() + " due to parse error"); tokenEntries.add(TokenEntry.getEOF()); - } catch (IOException e) { - e.printStackTrace(); - System.err.println("Skipping " + sourceCode.getFileName() + " due to parse error"); - tokenEntries.add(TokenEntry.getEOF()); - } finally { - IOUtils.closeQuietly(reader); } } diff --git a/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java b/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java index 1f595003f3..c3e4f6e622 100644 --- a/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java +++ b/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java @@ -11,7 +11,6 @@ import java.io.IOException; import java.io.PushbackReader; import java.util.Properties; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; /** @@ -31,41 +30,43 @@ public class CsTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { - Tokenizer tokenizer = new Tokenizer(sourceCode.getCodeBuffer().toString()); - Token token = tokenizer.getNextToken(); + try (Tokenizer tokenizer = new Tokenizer(sourceCode.getCodeBuffer().toString())) { + Token token = tokenizer.getNextToken(); - while (!token.equals(Token.EOF)) { - Token lookAhead = tokenizer.getNextToken(); + while (!token.equals(Token.EOF)) { + Token lookAhead = tokenizer.getNextToken(); - // Ignore using directives - // Only using directives should be ignored, because these are used - // to import namespaces - // - // Using directive: 'using System.Math;' - // Using statement: 'using (Font font1 = new Font(..)) { .. }' - if (ignoreUsings && "using".equals(token.image) && !"(".equals(lookAhead.image)) { - // We replace the 'using' token by a random token, because it - // should not be part of - // any duplication block. When we omit it from the token stream, - // there is a change that - // we get a duplication block that starts before the 'using' - // directives and ends afterwards. - String randomTokenText = RandomStringUtils.randomAlphanumeric(20); + // Ignore using directives + // Only using directives should be ignored, because these are used + // to import namespaces + // + // Using directive: 'using System.Math;' + // Using statement: 'using (Font font1 = new Font(..)) { .. }' + if (ignoreUsings && "using".equals(token.image) && !"(".equals(lookAhead.image)) { + // We replace the 'using' token by a random token, because it + // should not be part of + // any duplication block. When we omit it from the token stream, + // there is a change that + // we get a duplication block that starts before the 'using' + // directives and ends afterwards. + String randomTokenText = RandomStringUtils.randomAlphanumeric(20); - token = new Token(randomTokenText, token.lineNumber); - // Skip all other tokens of the using directive to prevent a - // partial matching - while (!";".equals(lookAhead.image) && !lookAhead.equals(Token.EOF)) { - lookAhead = tokenizer.getNextToken(); + token = new Token(randomTokenText, token.lineNumber); + // Skip all other tokens of the using directive to prevent a + // partial matching + while (!";".equals(lookAhead.image) && !lookAhead.equals(Token.EOF)) { + lookAhead = tokenizer.getNextToken(); + } } + if (!";".equals(token.image)) { + tokenEntries.add(new TokenEntry(token.image, sourceCode.getFileName(), token.lineNumber)); + } + token = lookAhead; } - if (!";".equals(token.image)) { - tokenEntries.add(new TokenEntry(token.image, sourceCode.getFileName(), token.lineNumber)); - } - token = lookAhead; + tokenEntries.add(TokenEntry.getEOF()); + } catch (IOException e) { + e.printStackTrace(); } - tokenEntries.add(TokenEntry.getEOF()); - IOUtils.closeQuietly(tokenizer); } public void setIgnoreUsings(boolean ignoreUsings) { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidDuplicateLiteralsRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidDuplicateLiteralsRule.java index 7e51797aab..f4e1b657e7 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidDuplicateLiteralsRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/AvoidDuplicateLiteralsRule.java @@ -17,7 +17,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import net.sourceforge.pmd.lang.java.ast.ASTAnnotation; @@ -116,17 +115,13 @@ public class AvoidDuplicateLiteralsRule extends AbstractJavaRule { exceptions = p.parse(getProperty(EXCEPTION_LIST_DESCRIPTOR)); } else if (getProperty(EXCEPTION_FILE_DESCRIPTOR) != null) { exceptions = new HashSet<>(); - LineNumberReader reader = null; - try { - reader = getLineReader(); + try (LineNumberReader reader = getLineReader()) { String line; while ((line = reader.readLine()) != null) { exceptions.add(line); } } catch (IOException ioe) { ioe.printStackTrace(); - } finally { - IOUtils.closeQuietly(reader); } } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java index 3ba6f76e08..a74222b92c 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/ParserCornersTest.java @@ -275,13 +275,10 @@ public class ParserCornersTest { } private String readAsString(String resource) { - InputStream in = ParserCornersTest.class.getResourceAsStream(resource); - try { + try (InputStream in = ParserCornersTest.class.getResourceAsStream(resource)) { return IOUtils.toString(in, StandardCharsets.UTF_8); } catch (IOException e) { throw new RuntimeException(e); - } finally { - IOUtils.closeQuietly(in); } } diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptTokenizer.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptTokenizer.java index 9fcecbc903..3c236c57e4 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptTokenizer.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptTokenizer.java @@ -4,11 +4,10 @@ package net.sourceforge.pmd.cpd; +import java.io.IOException; import java.io.Reader; import java.io.StringReader; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter; import net.sourceforge.pmd.cpd.token.TokenFilter; import net.sourceforge.pmd.lang.LanguageRegistry; @@ -26,11 +25,9 @@ public class EcmascriptTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { StringBuilder buffer = sourceCode.getCodeBuffer(); - Reader reader = null; - try { + try (Reader reader = new StringReader(buffer.toString())) { LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(EcmascriptLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - reader = new StringReader(buffer.toString()); TokenFilter tokenFilter = new JavaCCTokenFilter(languageVersionHandler .getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader)); @@ -46,8 +43,8 @@ public class EcmascriptTokenizer implements Tokenizer { err.printStackTrace(); System.err.println("Skipping " + sourceCode.getFileName() + " due to parse error"); tokenEntries.add(TokenEntry.getEOF()); - } finally { - IOUtils.closeQuietly(reader); + } catch (IOException e) { + e.printStackTrace(); } } diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPTokenizer.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPTokenizer.java index 7d032e99f4..48cfb26500 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPTokenizer.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPTokenizer.java @@ -4,11 +4,10 @@ package net.sourceforge.pmd.cpd; +import java.io.IOException; import java.io.Reader; import java.io.StringReader; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.lang.TokenManager; @@ -23,11 +22,8 @@ public class JSPTokenizer implements Tokenizer { StringBuilder buffer = sourceCode.getCodeBuffer(); LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JspLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - Reader reader = null; - try { - reader = new StringReader(buffer.toString()); - reader = IOUtil.skipBOM(reader); + try (Reader reader = IOUtil.skipBOM(new StringReader(buffer.toString()))) { TokenManager tokenMgr = languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader); Token currentToken = (Token) tokenMgr.getNextToken(); @@ -37,8 +33,8 @@ public class JSPTokenizer implements Tokenizer { currentToken.beginLine)); currentToken = (Token) tokenMgr.getNextToken(); } - } finally { - IOUtils.closeQuietly(reader); + } catch (IOException e) { + e.printStackTrace(); } tokenEntries.add(TokenEntry.getEOF()); } diff --git a/pmd-matlab/src/main/java/net/sourceforge/pmd/cpd/MatlabTokenizer.java b/pmd-matlab/src/main/java/net/sourceforge/pmd/cpd/MatlabTokenizer.java index 4b135d1be7..818c2ff282 100644 --- a/pmd-matlab/src/main/java/net/sourceforge/pmd/cpd/MatlabTokenizer.java +++ b/pmd-matlab/src/main/java/net/sourceforge/pmd/cpd/MatlabTokenizer.java @@ -4,11 +4,10 @@ package net.sourceforge.pmd.cpd; +import java.io.IOException; import java.io.Reader; import java.io.StringReader; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter; import net.sourceforge.pmd.cpd.token.TokenFilter; import net.sourceforge.pmd.lang.LanguageRegistry; @@ -26,12 +25,10 @@ public class MatlabTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { StringBuilder buffer = sourceCode.getCodeBuffer(); - Reader reader = null; - try { + try (Reader reader = IOUtil.skipBOM(new StringReader(buffer.toString()))) { LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(MatlabLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - reader = new StringReader(buffer.toString()); - reader = IOUtil.skipBOM(reader); + final TokenFilter tokenFilter = new JavaCCTokenFilter(languageVersionHandler .getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader)); @@ -42,12 +39,10 @@ public class MatlabTokenizer implements Tokenizer { } tokenEntries.add(TokenEntry.getEOF()); System.err.println("Added " + sourceCode.getFileName()); - } catch (TokenMgrError err) { + } catch (TokenMgrError | IOException err) { err.printStackTrace(); System.err.println("Skipping " + sourceCode.getFileName() + " due to parse error"); tokenEntries.add(TokenEntry.getEOF()); - } finally { - IOUtils.closeQuietly(reader); } } } diff --git a/pmd-objectivec/src/main/java/net/sourceforge/pmd/cpd/ObjectiveCTokenizer.java b/pmd-objectivec/src/main/java/net/sourceforge/pmd/cpd/ObjectiveCTokenizer.java index b976c90008..00e56d793c 100644 --- a/pmd-objectivec/src/main/java/net/sourceforge/pmd/cpd/ObjectiveCTokenizer.java +++ b/pmd-objectivec/src/main/java/net/sourceforge/pmd/cpd/ObjectiveCTokenizer.java @@ -4,11 +4,10 @@ package net.sourceforge.pmd.cpd; +import java.io.IOException; import java.io.Reader; import java.io.StringReader; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter; import net.sourceforge.pmd.cpd.token.TokenFilter; import net.sourceforge.pmd.lang.LanguageRegistry; @@ -25,11 +24,9 @@ public class ObjectiveCTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { StringBuilder buffer = sourceCode.getCodeBuffer(); - Reader reader = null; - try { + try (Reader reader = new StringReader(buffer.toString())) { LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(ObjectiveCLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - reader = new StringReader(buffer.toString()); final TokenFilter tokenFilter = new JavaCCTokenFilter(languageVersionHandler .getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader)); @@ -44,8 +41,8 @@ public class ObjectiveCTokenizer implements Tokenizer { err.printStackTrace(); System.err.println("Skipping " + sourceCode.getFileName() + " due to parse error"); tokenEntries.add(TokenEntry.getEOF()); - } finally { - IOUtils.closeQuietly(reader); + } catch (IOException e) { + e.printStackTrace(); } } } diff --git a/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java b/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java index 1783278024..9996d61985 100644 --- a/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java +++ b/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java @@ -4,11 +4,10 @@ package net.sourceforge.pmd.cpd; +import java.io.IOException; import java.io.Reader; import java.io.StringReader; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter; import net.sourceforge.pmd.cpd.token.TokenFilter; import net.sourceforge.pmd.lang.LanguageRegistry; @@ -26,12 +25,9 @@ public class PythonTokenizer implements Tokenizer { @Override public void tokenize(SourceCode sourceCode, Tokens tokenEntries) { StringBuilder buffer = sourceCode.getCodeBuffer(); - Reader reader = null; - try { + try (Reader reader = IOUtil.skipBOM(new StringReader(buffer.toString()))) { LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(PythonLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - reader = new StringReader(buffer.toString()); - reader = IOUtil.skipBOM(reader); TokenFilter tokenFilter = new JavaCCTokenFilter(languageVersionHandler .getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader)); @@ -42,12 +38,10 @@ public class PythonTokenizer implements Tokenizer { } tokenEntries.add(TokenEntry.getEOF()); System.err.println("Added " + sourceCode); - } catch (TokenMgrError err) { + } catch (TokenMgrError | IOException err) { err.printStackTrace(); System.err.println("Skipping " + sourceCode + " due to parse error"); tokenEntries.add(TokenEntry.getEOF()); - } finally { - IOUtils.closeQuietly(reader); } } } diff --git a/pmd-scala/src/main/java/org/sonar/plugins/scala/util/StringUtils.java b/pmd-scala/src/main/java/org/sonar/plugins/scala/util/StringUtils.java index 8027437555..0000321a6e 100644 --- a/pmd-scala/src/main/java/org/sonar/plugins/scala/util/StringUtils.java +++ b/pmd-scala/src/main/java/org/sonar/plugins/scala/util/StringUtils.java @@ -26,8 +26,6 @@ import java.io.StringReader; import java.util.ArrayList; import java.util.List; -import org.apache.commons.io.IOUtils; - public final class StringUtils { private StringUtils() { // to prevent instantiation @@ -35,15 +33,11 @@ public final class StringUtils { public static List convertStringToListOfLines(String string) throws IOException { final List lines = new ArrayList<>(); - BufferedReader reader = null; - try { - reader = new BufferedReader(new StringReader(string)); + try (BufferedReader reader = new BufferedReader(new StringReader(string))) { String line = null; while ((line = reader.readLine()) != null) { lines.add(line); } - } finally { - IOUtils.closeQuietly(reader); } return lines; } diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java index e559824029..83030f7fe5 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/testframework/RuleTst.java @@ -25,7 +25,6 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; -import org.apache.commons.io.IOUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -328,13 +327,12 @@ public abstract class RuleTst { */ public TestDescriptor[] extractTestsFromXml(Rule rule, String testsFileName, String baseDirectory) { String testXmlFileName = baseDirectory + testsFileName + ".xml"; - InputStream inputStream = getClass().getResourceAsStream(testXmlFileName); - if (inputStream == null) { - throw new RuntimeException("Couldn't find " + testXmlFileName); - } Document doc; - try { + try (InputStream inputStream = getClass().getResourceAsStream(testXmlFileName)) { + if (inputStream == null) { + throw new RuntimeException("Couldn't find " + testXmlFileName); + } doc = documentBuilder.parse(inputStream); } catch (FactoryConfigurationError fce) { throw new RuntimeException("Couldn't parse " + testXmlFileName + ", due to: " + fce, fce); @@ -342,8 +340,6 @@ public abstract class RuleTst { throw new RuntimeException("Couldn't parse " + testXmlFileName + ", due to: " + ioe, ioe); } catch (SAXException se) { throw new RuntimeException("Couldn't parse " + testXmlFileName + ", due to: " + se, se); - } finally { - IOUtils.closeQuietly(inputStream); } return parseTests(rule, doc); diff --git a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/beans/SettingsPersistenceUtil.java b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/beans/SettingsPersistenceUtil.java index e65fbca5f7..22255494dc 100644 --- a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/beans/SettingsPersistenceUtil.java +++ b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/beans/SettingsPersistenceUtil.java @@ -24,7 +24,6 @@ import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.PropertyUtils; -import org.apache.commons.io.IOUtils; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -92,17 +91,13 @@ public final class SettingsPersistenceUtil { * @param file File to parse */ private static Optional getDocument(File file) { - InputStream stream = null; if (file.exists()) { - try { + try (InputStream stream = new FileInputStream(file)) { DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - stream = new FileInputStream(file); Document document = builder.parse(stream); return Optional.of(document); } catch (SAXException | ParserConfigurationException | IOException e) { e.printStackTrace(); - } finally { - IOUtils.closeQuietly(stream); } } diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfTokenizer.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfTokenizer.java index c4434a0005..9ddce331de 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfTokenizer.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfTokenizer.java @@ -4,11 +4,10 @@ package net.sourceforge.pmd.cpd; +import java.io.IOException; import java.io.Reader; import java.io.StringReader; -import org.apache.commons.io.IOUtils; - import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.lang.TokenManager; @@ -27,11 +26,8 @@ public class VfTokenizer implements Tokenizer { StringBuilder buffer = sourceCode.getCodeBuffer(); LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(VfLanguageModule.NAME) .getDefaultVersion().getLanguageVersionHandler(); - Reader reader = null; - try { - reader = new StringReader(buffer.toString()); - reader = IOUtil.skipBOM(reader); + try (Reader reader = IOUtil.skipBOM(new StringReader(buffer.toString()))) { TokenManager tokenMgr = languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions()) .getTokenManager(sourceCode.getFileName(), reader); Token currentToken = (Token) tokenMgr.getNextToken(); @@ -41,8 +37,8 @@ public class VfTokenizer implements Tokenizer { currentToken.beginLine)); currentToken = (Token) tokenMgr.getNextToken(); } - } finally { - IOUtils.closeQuietly(reader); + } catch (IOException e) { + e.printStackTrace(); } tokenEntries.add(TokenEntry.getEOF()); }