diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 472047cab8..191d9f5e87 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -96,6 +96,7 @@ For the changes, see [PMD Designer Changelog](https://github.com/pmd/pmd-designe * [#2108](https://github.com/pmd/pmd/issues/2108): \[java] \[doc] ImmutableField rule: Description should clarify shallow immutability * [#2461](https://github.com/pmd/pmd/issues/2461): \[java] ExcessiveParameterListRule must ignore a private constructor * java-errorprone + * [#2264](https://github.com/pmd/pmd/issues/2264): \[java] SuspiciousEqualsMethodName: Improve description about error-prone overloading of equals() * [#2410](https://github.com/pmd/pmd/issues/2410): \[java] ProperCloneImplementation not valid for final class * [#2431](https://github.com/pmd/pmd/issues/2431): \[java] InvalidLogMessageFormatRule throws IndexOutOfBoundsException when only logging exception message * [#2439](https://github.com/pmd/pmd/issues/2439): \[java] AvoidCatchingThrowable can not detect the case: catch (java.lang.Throwable t) @@ -103,6 +104,7 @@ For the changes, see [PMD Designer Changelog](https://github.com/pmd/pmd-designe * [#2531](https://github.com/pmd/pmd/issues/2531): \[java] UnnecessaryCaseChange can not detect the case like: foo.equals(bar.toLowerCase()) * [#2647](https://github.com/pmd/pmd/issues/2647): \[java] Deprecate rule DataFlowAnomalyAnalysis * java-performance + * [#1868](https://github.com/pmd/pmd/issues/1868): \[java] false-positive for SimplifyStartsWith if string is empty * [#2441](https://github.com/pmd/pmd/issues/2441): \[java] RedundantFieldInitializer can not detect a special case for char initialize: `char foo = '\0';` * [#2530](https://github.com/pmd/pmd/issues/2530): \[java] StringToString can not detect the case: getStringMethod().toString() @@ -176,6 +178,17 @@ are deprecated as internal API. * [#2699](https://github.com/pmd/pmd/pull/2699): \[java] ProperCloneImplementation not valid for final class - [Mykhailo Palahuta](https://github.com/Drofff) * [#2700](https://github.com/pmd/pmd/pull/2700): \[java] Fix OnlyOneReturn code example - [Jan-Lukas Else](https://github.com/jlelse) * [#2722](https://github.com/pmd/pmd/pull/2722): \[doc] \[java] ImmutableField: extend description, fixes #2108 - [Mateusz Stefanski](https://github.com/mateusz-stefanski) +* [#2723](https://github.com/pmd/pmd/pull/2723): \[doc] \[java] SimplifyStartsWith: update description and example, fixes #1868 - [Mateusz Stefanski](https://github.com/mateusz-stefanski) +* [#2724](https://github.com/pmd/pmd/pull/2724): \[doc] [java] SuspiciousEqualsMethodName: update description, fixes #2264 - [Mateusz Stefanski](https://github.com/mateusz-stefanski) +* [#2725](https://github.com/pmd/pmd/pull/2725): Cleanup: change valueOf to parse when we need primitive return value. - [XenoAmess](https://github.com/XenoAmess) +* [#2726](https://github.com/pmd/pmd/pull/2726): Cleanup: replace StringBuffer with StringBuilder - [XenoAmess](https://github.com/XenoAmess) +* [#2727](https://github.com/pmd/pmd/pull/2727): Cleanup: replace indexOf() < 0 with contains - [XenoAmess](https://github.com/XenoAmess) +* [#2728](https://github.com/pmd/pmd/pull/2728): Cleanup: javadoc issues - [XenoAmess](https://github.com/XenoAmess) +* [#2729](https://github.com/pmd/pmd/pull/2729): Cleanup: use print instead of printf if no format exists - [XenoAmess](https://github.com/XenoAmess) +* [#2730](https://github.com/pmd/pmd/pull/2730): Cleanup: StringBuilder issues - [XenoAmess](https://github.com/XenoAmess) +* [#2731](https://github.com/pmd/pmd/pull/2731): Cleanup: avoid compiling Patterns repeatedly - [XenoAmess](https://github.com/XenoAmess) +* [#2732](https://github.com/pmd/pmd/pull/2732): Cleanup: use StandardCharsets instead of Charset.forName - [XenoAmess](https://github.com/XenoAmess) +* [#2734](https://github.com/pmd/pmd/pull/2734): Cleanup: use try with resources - [XenoAmess](https://github.com/XenoAmess) {% endtocmaker %} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java index 122a368d14..cd933218fd 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java @@ -8,7 +8,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.io.StringReader; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; @@ -138,9 +138,9 @@ public class RuleSetFactoryCompatibility { */ String determineEncoding(byte[] bytes) { String firstBytes = new String(bytes, 0, bytes.length > 1024 ? 1024 : bytes.length, - Charset.forName("ISO-8859-1")); + StandardCharsets.ISO_8859_1); Matcher matcher = ENCODING_PATTERN.matcher(firstBytes); - String encoding = Charset.forName("UTF-8").name(); + String encoding = StandardCharsets.UTF_8.name(); if (matcher.find()) { encoding = matcher.group(1); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDCommandLineInterface.java b/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDCommandLineInterface.java index 58af4c1bd2..8642562b11 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDCommandLineInterface.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDCommandLineInterface.java @@ -60,10 +60,10 @@ public final class PMDCommandLineInterface { public static String buildUsageText(JCommander jcommander) { StringBuilder usage = new StringBuilder(); - String allCommandsDescription = null; + StringBuilder allCommandsDescription = null; if (jcommander != null && jcommander.getCommands() != null) { for (String command : jcommander.getCommands().keySet()) { - allCommandsDescription += jcommander.getCommandDescription(command) + PMD.EOL; + allCommandsDescription.append(jcommander.getCommandDescription(command)).append(PMD.EOL); } } @@ -143,7 +143,7 @@ public final class PMDCommandLineInterface { Renderer renderer = RendererFactory.createRenderer(reportName, new Properties()); buf.append(" ").append(reportName).append(": "); if (!reportName.equals(renderer.getName())) { - buf.append(" Deprecated alias for '" + renderer.getName()).append(PMD.EOL); + buf.append(" Deprecated alias for '").append(renderer.getName()).append(PMD.EOL); continue; } buf.append(renderer.getDescription()).append(PMD.EOL); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/VSRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/VSRenderer.java index f34622e2f0..cc3af3f2d2 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/VSRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/VSRenderer.java @@ -33,9 +33,8 @@ public class VSRenderer implements Renderer, CPDRenderer { for (Iterator iterator = match.iterator(); iterator.hasNext();) { mark = iterator.next(); writer.append(mark.getFilename()) - .append('(').append(String.valueOf(mark.getBeginLine())).append("):") - .append(" Between lines " + mark.getBeginLine() + " and " - + (mark.getBeginLine() + match.getLineCount()) + PMD.EOL); + .append('(').append(String.valueOf(mark.getBeginLine())).append("):") + .append(" Between lines ").append(String.valueOf(mark.getBeginLine())).append(" and ").append(String.valueOf(mark.getBeginLine() + match.getLineCount())).append(PMD.EOL); } } writer.flush(); 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 682dbbc587..af06618833 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 @@ -131,8 +131,7 @@ public class ReportHTMLPrintVisitor extends ReportVisitor { vnode.getParent().addNumberOfViolation(1); RuleViolation vio = vnode.getRuleViolation(); - classBuf.append("" + " " + vio.getMethodName() + "" + " " + this.displayRuleViolation(vio) - + "" + ""); + classBuf.append("" + " ").append(vio.getMethodName()).append("").append(" ").append(this.displayRuleViolation(vio)).append("").append(""); } private void renderPackage(PackageNode pnode) { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java index 1e8e4c68f5..2936a05b78 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/ParametricRuleViolation.java @@ -79,7 +79,7 @@ public class ParametricRuleViolation implements RuleViolation { protected String expandVariables(String message) { - if (message.indexOf("${") < 0) { + if (!message.contains("${")) { return message; } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/properties/BooleanProperty.java b/pmd-core/src/main/java/net/sourceforge/pmd/properties/BooleanProperty.java index 0f3ef45b96..7614a2fa15 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/properties/BooleanProperty.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/properties/BooleanProperty.java @@ -33,7 +33,7 @@ public final class BooleanProperty extends AbstractSingleValueProperty */ @Deprecated public BooleanProperty(String theName, String theDescription, String defaultBoolStr, float theUIOrder) { - this(theName, theDescription, Boolean.valueOf(defaultBoolStr), theUIOrder, false); + this(theName, theDescription, Boolean.parseBoolean(defaultBoolStr), theUIOrder, false); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java index 67a27d783a..c738fac851 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/CodeClimateRenderer.java @@ -145,27 +145,38 @@ public class CodeClimateRenderer extends AbstractIncrementingRenderer { } private String getBody() { - String result = "## " + rule.getName() + "\\n\\n" + "Since: PMD " + rule.getSince() + "\\n\\n" + "Priority: " - + rule.getPriority() + "\\n\\n" - + "[Categories](https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#categories): " - + Arrays.toString(getCategories()).replaceAll("[\\[\\]]", "") + "\\n\\n" - + "[Remediation Points](https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#remediation-points): " - + getRemediationPoints() + "\\n\\n" + cleaned(rule.getDescription()); + StringBuilder result = new StringBuilder(); + result.append("## ") + .append(rule.getName()) + .append("\\n\\n") + .append("Since: PMD ") + .append(rule.getSince()) + .append("\\n\\n") + .append("Priority: ") + .append(rule.getPriority()) + .append("\\n\\n") + .append("[Categories](https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#categories): ") + .append(Arrays.toString(getCategories()).replaceAll("[\\[\\]]", "")) + .append("\\n\\n") + .append("[Remediation Points](https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#remediation-points): ") + .append(getRemediationPoints()) + .append("\\n\\n") + .append(cleaned(rule.getDescription())); if (!rule.getExamples().isEmpty()) { - result += "\\n\\n### Example:\\n\\n"; + result.append("\\n\\n### Example:\\n\\n"); for (String snippet : rule.getExamples()) { String exampleSnippet = snippet.replaceAll("\\n", "\\\\n"); exampleSnippet = exampleSnippet.replaceAll("\\t", "\\\\t"); - result += "```java\\n" + exampleSnippet + "\\n``` "; + result.append("```java\\n").append(exampleSnippet).append("\\n``` "); } } if (!rule.getPropertyDescriptors().isEmpty()) { - result += "\\n\\n### [PMD properties](" + PMD_PROPERTIES_URL + ")\\n\\n"; - result += "Name | Value | Description\\n"; - result += "--- | --- | ---\\n"; + result.append("\\n\\n### [PMD properties](").append(PMD_PROPERTIES_URL).append(")\\n\\n"); + result.append("Name | Value | Description\\n"); + result.append("--- | --- | ---\\n"); for (PropertyDescriptor property : rule.getPropertyDescriptors()) { String propertyName = property.name().replaceAll("\\_", "\\\\_"); @@ -182,10 +193,10 @@ public class CodeClimateRenderer extends AbstractIncrementingRenderer { } propertyValue = propertyValue.replaceAll("(\n|\r\n|\r)", "\\\\n"); - result += propertyName + " | " + propertyValue + " | " + property.description() + "\\n"; + result.append(propertyName).append(" | ").append(propertyValue).append(" | ").append(property.description()).append("\\n"); } } - return cleaned(result); + return cleaned(result.toString()); } private String cleaned(String original) { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java index 5be922ea56..5f37db9be2 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/HTMLRenderer.java @@ -128,12 +128,13 @@ public class HTMLRenderer extends AbstractIncrementingRenderer { buf.append(" bgcolor=\"lightgrey\""); } colorize = !colorize; - buf.append("> " + PMD.EOL); - buf.append("" + violationCount + "" + PMD.EOL); - buf.append("" - + renderFileName(rv.getFilename(), rv.getBeginLine()) - + "" + PMD.EOL); - buf.append("" + Integer.toString(rv.getBeginLine()) + "" + PMD.EOL); + buf.append("> ").append(PMD.EOL); + buf.append("").append(violationCount).append("").append(PMD.EOL); + buf.append("") + .append(renderFileName(rv.getFilename(), rv.getBeginLine())) + .append("") + .append(PMD.EOL); + buf.append("").append(rv.getBeginLine()).append("").append(PMD.EOL); String d = StringEscapeUtils.escapeHtml4(rv.getDescription()); @@ -141,8 +142,8 @@ public class HTMLRenderer extends AbstractIncrementingRenderer { if (StringUtils.isNotBlank(infoUrl)) { d = "" + d + ""; } - buf.append("" + d + "" + PMD.EOL); - buf.append("" + PMD.EOL); + buf.append("").append(d).append("").append(PMD.EOL); + buf.append("").append(PMD.EOL); writer.write(buf.toString()); violationCount++; } @@ -173,7 +174,7 @@ public class HTMLRenderer extends AbstractIncrementingRenderer { writer.write("" + PMD.EOL + "" + PMD.EOL); - StringBuffer buf = new StringBuffer(500); + StringBuilder buf = new StringBuilder(500); boolean colorize = true; for (Report.ProcessingError pe : errors) { buf.setLength(0); @@ -182,10 +183,10 @@ public class HTMLRenderer extends AbstractIncrementingRenderer { buf.append(" bgcolor=\"lightgrey\""); } colorize = !colorize; - buf.append("> " + PMD.EOL); - buf.append("" + PMD.EOL); - buf.append("" + PMD.EOL); - buf.append("" + PMD.EOL); + buf.append("> ").append(PMD.EOL); + buf.append("").append(PMD.EOL); + buf.append("").append(PMD.EOL); + buf.append("").append(PMD.EOL); writer.write(buf.toString()); } writer.write("
FileProblem
" + renderFileName(pe.getFile(), -1) + "
" + pe.getDetail() + "
").append(renderFileName(pe.getFile(), -1)).append("
").append(pe.getDetail()).append("
"); @@ -210,15 +211,14 @@ public class HTMLRenderer extends AbstractIncrementingRenderer { buf.append(" bgcolor=\"lightgrey\""); } colorize = !colorize; - buf.append("> " + PMD.EOL); + buf.append("> ").append(PMD.EOL); RuleViolation rv = sv.getRuleViolation(); - buf.append("" + renderFileName(rv.getFilename(), rv.getBeginLine()) + "" + PMD.EOL); - buf.append("" + rv.getBeginLine() + "" + PMD.EOL); - buf.append("" + renderRuleName(rv.getRule()) + "" + PMD.EOL); - buf.append("" + (sv.suppressedByNOPMD() ? "NOPMD" : "Annotation") + "" + PMD.EOL); - buf.append("" + (sv.getUserMessage() == null ? "" : sv.getUserMessage()) + "" - + PMD.EOL); - buf.append("" + PMD.EOL); + buf.append("").append(renderFileName(rv.getFilename(), rv.getBeginLine())).append("").append(PMD.EOL); + buf.append("").append(rv.getBeginLine()).append("").append(PMD.EOL); + buf.append("").append(renderRuleName(rv.getRule())).append("").append(PMD.EOL); + buf.append("").append(sv.suppressedByNOPMD() ? "NOPMD" : "Annotation").append("").append(PMD.EOL); + buf.append("").append(sv.getUserMessage() == null ? "" : sv.getUserMessage()).append("").append(PMD.EOL); + buf.append("").append(PMD.EOL); writer.write(buf.toString()); } writer.write(""); @@ -243,10 +243,10 @@ public class HTMLRenderer extends AbstractIncrementingRenderer { buf.append(" bgcolor=\"lightgrey\""); } colorize = !colorize; - buf.append("> " + PMD.EOL); - buf.append("" + renderRuleName(ce.rule()) + "" + PMD.EOL); - buf.append("" + ce.issue() + "" + PMD.EOL); - buf.append("" + PMD.EOL); + buf.append("> ").append(PMD.EOL); + buf.append("").append(renderRuleName(ce.rule())).append("").append(PMD.EOL); + buf.append("").append(ce.issue()).append("").append(PMD.EOL); + buf.append("").append(PMD.EOL); writer.write(buf.toString()); } writer.write(""); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/IDEAJRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/IDEAJRenderer.java index 4147ef0404..0cc16dc8d9 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/IDEAJRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/IDEAJRenderer.java @@ -66,7 +66,7 @@ public class IDEAJRenderer extends AbstractIncrementingRenderer { while (violations.hasNext()) { buf.setLength(0); RuleViolation rv = violations.next(); - buf.append(rv.getDescription() + PMD.EOL); + buf.append(rv.getDescription()).append(PMD.EOL); buf.append(" at ").append(getFullyQualifiedClassName(rv.getFilename(), sourcePath)).append(".method("); buf.append(getSimpleFileName(rv.getFilename())).append(':').append(rv.getBeginLine()).append(')') .append(PMD.EOL); 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 bc2c95c706..c4a960c464 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 @@ -125,17 +125,41 @@ public class TextColorRenderer extends AbstractAccumulatingRenderer { String nextFile = determineFileName(rv.getFilename()); if (!nextFile.equals(lastFile)) { lastFile = nextFile; - buf.append(this.yellowBold + "*" + this.colorReset + " file: " + this.whiteBold - + this.getRelativePath(lastFile) + this.colorReset + PMD.EOL); + buf.append(this.yellowBold) + .append("*") + .append(this.colorReset) + .append(" file: ") + .append(this.whiteBold) + .append(this.getRelativePath(lastFile)) + .append(this.colorReset) + .append(PMD.EOL); } - buf.append( - this.green + " src: " + this.cyan + lastFile.substring(lastFile.lastIndexOf(File.separator) + 1) - + this.colorReset + ":" + this.cyan + rv.getBeginLine() - + (rv.getEndLine() == -1 ? "" : ":" + rv.getEndLine()) + this.colorReset + PMD.EOL); - buf.append(this.green + " rule: " + this.colorReset + rv.getRule().getName() + PMD.EOL); - buf.append(this.green + " msg: " + this.colorReset + rv.getDescription() + PMD.EOL); - buf.append(this.green + " code: " + this.colorReset + this.getLine(lastFile, rv.getBeginLine()) + PMD.EOL - + PMD.EOL); + buf.append(this.green) + .append(" src: ") + .append(this.cyan) + .append(lastFile.substring(lastFile.lastIndexOf(File.separator) + 1)) + .append(this.colorReset).append(":") + .append(this.cyan) + .append(rv.getBeginLine()) + .append(rv.getEndLine() == -1 ? "" : ":" + rv.getEndLine()) + .append(this.colorReset) + .append(PMD.EOL); + buf.append(this.green) + .append(" rule: ") + .append(this.colorReset) + .append(rv.getRule().getName()) + .append(PMD.EOL); + buf.append(this.green) + .append(" msg: ") + .append(this.colorReset) + .append(rv.getDescription()) + .append(PMD.EOL); + buf.append(this.green) + .append(" code: ") + .append(this.colorReset) + .append(this.getLine(lastFile, rv.getBeginLine())) + .append(PMD.EOL) + .append(PMD.EOL); writer.write(buf.toString()); } writer.write(PMD.EOL + PMD.EOL); @@ -155,11 +179,26 @@ public class TextColorRenderer extends AbstractAccumulatingRenderer { String nextFile = determineFileName(error.getFile()); if (!nextFile.equals(lastFile)) { lastFile = nextFile; - buf.append(this.redBold + "*" + this.colorReset + " file: " + this.whiteBold - + this.getRelativePath(lastFile) + this.colorReset + PMD.EOL); + buf.append(this.redBold) + .append("*") + .append(this.colorReset) + .append(" file: ") + .append(this.whiteBold) + .append(this.getRelativePath(lastFile)) + .append(this.colorReset) + .append(PMD.EOL); } - buf.append(this.green + " err: " + this.cyan + error.getMsg() + this.colorReset + PMD.EOL) - .append(this.red).append(error.getDetail()).append(colorReset).append(PMD.EOL).append(PMD.EOL); + buf.append(this.green) + .append(" err: ") + .append(this.cyan) + .append(error.getMsg()) + .append(this.colorReset) + .append(PMD.EOL) + .append(this.red) + .append(error.getDetail()) + .append(colorReset) + .append(PMD.EOL) + .append(PMD.EOL); writer.write(buf.toString()); } @@ -167,9 +206,21 @@ public class TextColorRenderer extends AbstractAccumulatingRenderer { buf.setLength(0); numberOfErrors++; Report.ConfigurationError error = i.next(); - buf.append(this.redBold + "*" + this.colorReset + " rule: " + this.whiteBold - + error.rule().getName() + this.colorReset + PMD.EOL); - buf.append(this.green + " err: " + this.cyan + error.issue() + this.colorReset + PMD.EOL + PMD.EOL); + buf.append(this.redBold) + .append("*") + .append(this.colorReset) + .append(" rule: ") + .append(this.whiteBold) + .append(error.rule().getName()) + .append(this.colorReset) + .append(PMD.EOL); + buf.append(this.green) + .append(" err: ") + .append(this.cyan) + .append(error.issue()) + .append(this.colorReset) + .append(PMD.EOL) + .append(PMD.EOL); writer.write(buf.toString()); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextPadRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextPadRenderer.java index f4aeb0dbac..dcf599aa18 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextPadRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/TextPadRenderer.java @@ -50,12 +50,12 @@ public class TextPadRenderer extends AbstractIncrementingRenderer { @Override public void renderFileViolations(Iterator violations) throws IOException { - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); while (violations.hasNext()) { RuleViolation rv = violations.next(); buf.setLength(0); // Filename - buf.append(determineFileName(rv.getFilename()) + "("); + buf.append(determineFileName(rv.getFilename())).append("("); // Line number buf.append(Integer.toString(rv.getBeginLine())).append(", "); // Name of violated rule diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/VBHTMLRenderer.java b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/VBHTMLRenderer.java index 9b050cbdc7..1af81231dc 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/renderers/VBHTMLRenderer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/renderers/VBHTMLRenderer.java @@ -68,9 +68,8 @@ public class VBHTMLRenderer extends AbstractIncrementingRenderer { } colorize = !colorize; - sb.append("" + rv.getBeginLine() - + "   "); - sb.append("" + rv.getDescription() + ""); + sb.append("").append(rv.getBeginLine()).append("   "); + sb.append("").append(rv.getDescription()).append(""); sb.append(""); sb.append(lineSep); writer.write(sb.toString()); @@ -130,7 +129,7 @@ public class VBHTMLRenderer extends AbstractIncrementingRenderer { private String header() { StringBuilder sb = new StringBuilder(600).append("PMD") - .append("