From fbd966a099774fc12b65fbb46411bebd8bfb876e Mon Sep 17 00:00:00 2001 From: Ryan Gustafson Date: Tue, 7 Oct 2008 04:28:39 +0000 Subject: [PATCH] Remove deprecated methods from Renderer. Also split AbstractRenderer off into AbstractAccumulatingRenderer to make the distinction with the AbstractIncrementalRenderer explicit. JavaDoc updated accordingly. git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@6576 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd/etc/changelog.txt | 5 +- .../test/net/sourceforge/pmd/ReportTest.java | 21 +++++-- .../pmd/renderers/AbstractRendererTst.java | 13 ++-- .../pmd/renderers/XMLRendererTest.java | 4 +- pmd/src/net/sourceforge/pmd/ant/PMDTask.java | 7 --- .../AbstractAccumulatingRenderer.java | 61 +++++++++++++++++++ ...java => AbstractIncrementingRenderer.java} | 27 +++----- .../pmd/renderers/AbstractRenderer.java | 56 +---------------- .../pmd/renderers/CSVRenderer.java | 2 +- .../pmd/renderers/EmacsRenderer.java | 2 +- .../pmd/renderers/HTMLRenderer.java | 2 +- .../pmd/renderers/IDEAJRenderer.java | 2 +- .../sourceforge/pmd/renderers/Renderer.java | 23 ------- .../pmd/renderers/SummaryHTMLRenderer.java | 13 ++-- .../pmd/renderers/TextColorRenderer.java | 6 +- .../pmd/renderers/TextPadRenderer.java | 2 +- .../pmd/renderers/TextRenderer.java | 7 +-- .../pmd/renderers/VBHTMLRenderer.java | 2 +- .../pmd/renderers/XMLRenderer.java | 2 +- .../pmd/renderers/YAHTMLRenderer.java | 7 +-- 20 files changed, 122 insertions(+), 142 deletions(-) create mode 100644 pmd/src/net/sourceforge/pmd/renderers/AbstractAccumulatingRenderer.java rename pmd/src/net/sourceforge/pmd/renderers/{AbstractIncrementalRenderer.java => AbstractIncrementingRenderer.java} (85%) diff --git a/pmd/etc/changelog.txt b/pmd/etc/changelog.txt index 967965e0b3..569be78749 100644 --- a/pmd/etc/changelog.txt +++ b/pmd/etc/changelog.txt @@ -322,9 +322,12 @@ The following is relatively complete list of the major changes (this may not be Added - Renderer.setDescription(String) Added - Renderer.getPropertyDefinitions() Added - Renderer.isShowSuppressedViolations() + Added - AbstractAccumulatingRenderer + Removed - Renderer.render(Report) + Removed - Renderer.render(Report, Writer) Renamed - Renderer.showSuppressedViolations(boolean) to Renderer.setShowSuppressedViolations(boolean) Renamed - PapariTextRenderer to TextColorRenderer - Renamed - OntheFlyRenderer to AbstractIncrementalRenderer + Renamed - OntheFlyRenderer to AbstractIncrementingRenderer PMD command line changes: diff --git a/pmd/regress/test/net/sourceforge/pmd/ReportTest.java b/pmd/regress/test/net/sourceforge/pmd/ReportTest.java index c2f896f699..4a0bd680be 100644 --- a/pmd/regress/test/net/sourceforge/pmd/ReportTest.java +++ b/pmd/regress/test/net/sourceforge/pmd/ReportTest.java @@ -6,6 +6,8 @@ package test.net.sourceforge.pmd; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import java.io.IOException; +import java.io.StringWriter; import java.util.Iterator; import java.util.Map; import java.util.Properties; @@ -152,7 +154,7 @@ public class ReportTest extends RuleTst implements ReportListener { // Files are grouped together now. @Test - public void testSortedReport_File() { + public void testSortedReport_File() throws IOException { Report r = new Report(); RuleContext ctx = new RuleContext(); ctx.setSourceCodeFilename("foo"); @@ -162,12 +164,12 @@ public class ReportTest extends RuleTst implements ReportListener { JavaNode s1 = getNode(10, 5, ctx.getSourceCodeFilename()); r.addRuleViolation(new JavaRuleViolation(new MockRule("name", "desc", "msg", "rulesetname"), ctx, s1)); Renderer rend = new XMLRenderer(new Properties()); - String result = rend.render(r); + String result = render(rend, r); assertTrue("sort order wrong", result.indexOf("bar") < result.indexOf("foo")); } @Test - public void testSortedReport_Line() { + public void testSortedReport_Line() throws IOException { Report r = new Report(); RuleContext ctx = new RuleContext(); ctx.setSourceCodeFilename("foo1"); @@ -177,7 +179,7 @@ public class ReportTest extends RuleTst implements ReportListener { JavaNode s1 = getNode(20, 5, ctx.getSourceCodeFilename()); r.addRuleViolation(new JavaRuleViolation(new MockRule("rule1", "rule1", "msg", "rulesetname"), ctx, s1)); Renderer rend = new XMLRenderer(new Properties()); - String result = rend.render(r); + String result = render(rend, r); assertTrue("sort order wrong", result.indexOf("rule2") < result.indexOf("rule1")); } @@ -229,7 +231,16 @@ public class ReportTest extends RuleTst implements ReportListener { s.testingOnly__setBeginColumn(5); return s; } - + + public static String render(Renderer renderer, Report report) throws IOException { + StringWriter writer = new StringWriter(); + renderer.setWriter(writer); + renderer.start(); + renderer.renderFileReport(null); + renderer.end(); + return writer.toString(); + } + public static junit.framework.Test suite() { return new JUnit4TestAdapter(ReportTest.class); } diff --git a/pmd/regress/test/net/sourceforge/pmd/renderers/AbstractRendererTst.java b/pmd/regress/test/net/sourceforge/pmd/renderers/AbstractRendererTst.java index 8f523f47ff..d4de5788dd 100644 --- a/pmd/regress/test/net/sourceforge/pmd/renderers/AbstractRendererTst.java +++ b/pmd/regress/test/net/sourceforge/pmd/renderers/AbstractRendererTst.java @@ -13,6 +13,7 @@ import net.sourceforge.pmd.renderers.Renderer; import org.junit.Test; +import test.net.sourceforge.pmd.ReportTest; import test.net.sourceforge.pmd.testframework.RuleTst; public abstract class AbstractRendererTst extends RuleTst { @@ -52,22 +53,22 @@ public abstract class AbstractRendererTst extends RuleTst { } @Test(expected = NullPointerException.class) - public void testNullPassedIn() { - getRenderer().render(null); + public void testNullPassedIn() throws Throwable { + ReportTest.render(getRenderer(), null); } @Test public void testRenderer() throws Throwable { Report rep = new Report(); runTestFromString(TEST1, new FooRule(), rep); - String actual = getRenderer().render(rep); + String actual = ReportTest.render(getRenderer(), rep); assertEquals(getExpected(), actual); } @Test public void testRendererEmpty() throws Throwable { Report rep = new Report(); - String actual = getRenderer().render(rep); + String actual = ReportTest.render(getRenderer(), rep); assertEquals(getExpectedEmpty(), actual); } @@ -75,7 +76,7 @@ public abstract class AbstractRendererTst extends RuleTst { public void testRendererMultiple() throws Throwable { Report rep = new Report(); runTestFromString(TEST1, new FooRule2(), rep); - String actual = getRenderer().render(rep); + String actual = ReportTest.render(getRenderer(), rep); assertEquals(getExpectedMultiple(), actual); } @@ -84,7 +85,7 @@ public abstract class AbstractRendererTst extends RuleTst { Report rep = new Report(); Report.ProcessingError err = new Report.ProcessingError("Error", "file"); rep.addError(err); - String actual = getRenderer().render(rep); + String actual = ReportTest.render(getRenderer(), rep); assertEquals(getExpectedError(err), actual); } diff --git a/pmd/regress/test/net/sourceforge/pmd/renderers/XMLRendererTest.java b/pmd/regress/test/net/sourceforge/pmd/renderers/XMLRendererTest.java index 840026e952..52c3d32d3c 100644 --- a/pmd/regress/test/net/sourceforge/pmd/renderers/XMLRendererTest.java +++ b/pmd/regress/test/net/sourceforge/pmd/renderers/XMLRendererTest.java @@ -28,6 +28,7 @@ import org.w3c.dom.Element; import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import test.net.sourceforge.pmd.ReportTest; import test.net.sourceforge.pmd.testframework.RuleTst; public class XMLRendererTest extends RuleTst { @@ -119,7 +120,8 @@ public class XMLRendererTest extends RuleTst { } private Element parseRootElement(Report rpt) throws SAXException, IOException, ParserConfigurationException { - return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(new XMLRenderer(new Properties()).render(rpt)))).getDocumentElement(); + String result = ReportTest.render(new XMLRenderer(new Properties()), rpt); + return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(result))).getDocumentElement(); } public static junit.framework.Test suite() { diff --git a/pmd/src/net/sourceforge/pmd/ant/PMDTask.java b/pmd/src/net/sourceforge/pmd/ant/PMDTask.java index 0208396bf3..6a117b7b43 100644 --- a/pmd/src/net/sourceforge/pmd/ant/PMDTask.java +++ b/pmd/src/net/sourceforge/pmd/ant/PMDTask.java @@ -7,7 +7,6 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; -import java.io.Writer; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -255,15 +254,12 @@ public class PMDTask extends Task { final String inputPath = ds.getBasedir().getPath(); Renderer logRenderer = new AbstractRenderer("log", "Logging renderer", null) { - @Override public void start() {} - @Override public void startFileAnalysis(DataSource dataSource) { log("Processing file " + dataSource.getNiceFileName(false, inputPath), Project.MSG_VERBOSE); } - @Override public void renderFileReport(Report r) { int size = r.size(); if (size > 0) { @@ -271,10 +267,7 @@ public class PMDTask extends Task { } } - @Override public void end() {} - - public void render(Writer writer, Report r) {} }; List renderers = new LinkedList(); renderers.add(logRenderer); diff --git a/pmd/src/net/sourceforge/pmd/renderers/AbstractAccumulatingRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/AbstractAccumulatingRenderer.java new file mode 100644 index 0000000000..c5100cdb54 --- /dev/null +++ b/pmd/src/net/sourceforge/pmd/renderers/AbstractAccumulatingRenderer.java @@ -0,0 +1,61 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ +package net.sourceforge.pmd.renderers; + +import java.io.IOException; +import java.util.Properties; + +import net.sourceforge.pmd.Report; +import net.sourceforge.pmd.util.datasource.DataSource; + +/** + * Abstract base class for {@link Renderer} implementations which only produce + * output once all source files are processed. Such {@link Renderer}s use + * working memory proportional to the number of violations found, which can + * be quite large in some scenarios. Consider using + * {@link AbstractIncrementingRenderer} which can use significantly less memory. + * + * Subclasses should implement the {@link #end()} method to output the + * {@link #report}. + * + * @see AbstractIncrementingRenderer + */ +public abstract class AbstractAccumulatingRenderer extends AbstractRenderer { + + /** + * The accumulated Report. + */ + protected Report report; + + public AbstractAccumulatingRenderer(String name, String description, Properties properties) { + super(name, description, properties); + } + + /** + * {@inheritDoc} + */ + public void start() throws IOException { + report = new Report(); + } + + /** + * {@inheritDoc} + */ + public void startFileAnalysis(DataSource dataSource) { + } + + /** + * {@inheritDoc} + */ + public void renderFileReport(Report report) throws IOException { + this.report.merge(report); + } + + /** + * Subclasses should output the {@link #report}. + * + * {@inheritDoc} + */ + public abstract void end() throws IOException; +} diff --git a/pmd/src/net/sourceforge/pmd/renderers/AbstractIncrementalRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/AbstractIncrementingRenderer.java similarity index 85% rename from pmd/src/net/sourceforge/pmd/renderers/AbstractIncrementalRenderer.java rename to pmd/src/net/sourceforge/pmd/renderers/AbstractIncrementingRenderer.java index b71e0f8d4c..647d7369ac 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/AbstractIncrementalRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/AbstractIncrementingRenderer.java @@ -4,7 +4,6 @@ package net.sourceforge.pmd.renderers; import java.io.IOException; -import java.io.Writer; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -12,6 +11,7 @@ import java.util.Properties; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.RuleViolation; +import net.sourceforge.pmd.util.datasource.DataSource; /** * Abstract base class for {@link Renderer} implementations which can produce @@ -24,7 +24,7 @@ import net.sourceforge.pmd.RuleViolation; * Only processing errors and suppressed violations are accumulated across all * files. These are intended to be processed in the {@link #end()} method. */ -public abstract class AbstractIncrementalRenderer extends AbstractRenderer { +public abstract class AbstractIncrementingRenderer extends AbstractRenderer { /** * Accumulated processing errors. @@ -36,24 +36,25 @@ public abstract class AbstractIncrementalRenderer extends AbstractRenderer { */ protected List suppressed = new LinkedList(); - public AbstractIncrementalRenderer(String name, String description, Properties properties) { + public AbstractIncrementingRenderer(String name, String description, Properties properties) { super(name, description, properties); } /** * {@inheritDoc} */ - public void render(Writer writer, Report report) throws IOException { - setWriter(writer); - start(); - renderFileReport(report); - end(); + public void start() throws IOException { + } + + /** + * {@inheritDoc} + */ + public void startFileAnalysis(DataSource dataSource) { } /** * {@inheritDoc} */ - @Override public void renderFileReport(Report report) throws IOException { Iterator violations = report.iterator(); if (violations.hasNext()) { @@ -70,13 +71,6 @@ public abstract class AbstractIncrementalRenderer extends AbstractRenderer { } } - /** - * {@inheritDoc} - */ - @Override - public void start() throws IOException { - } - /** * Render a series of {@link RuleViolation}s. * @param violations The iterator of violations to render. @@ -87,7 +81,6 @@ public abstract class AbstractIncrementalRenderer extends AbstractRenderer { /** * {@inheritDoc} */ - @Override public void end() throws IOException { } } diff --git a/pmd/src/net/sourceforge/pmd/renderers/AbstractRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/AbstractRenderer.java index 32d127cdc2..c8b178c55e 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/AbstractRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/AbstractRenderer.java @@ -3,16 +3,11 @@ */ package net.sourceforge.pmd.renderers; -import java.io.IOException; -import java.io.StringWriter; import java.io.Writer; import java.util.LinkedHashMap; import java.util.Map; import java.util.Properties; -import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.util.datasource.DataSource; - /** * Abstract base class for {@link Renderer} implementations. */ @@ -23,10 +18,9 @@ public abstract class AbstractRenderer implements Renderer { protected Map propertyDefinitions = new LinkedHashMap(); protected Properties properties; protected boolean showSuppressedViolations = true; - private Writer writer; - private Report mainReport; + protected Writer writer; - public AbstractRenderer(String name, String description, java.util.Properties properties) { + public AbstractRenderer(String name, String description, Properties properties) { this.name = name; this.description = description; this.properties = properties; @@ -90,19 +84,6 @@ public abstract class AbstractRenderer implements Renderer { this.showSuppressedViolations = showSuppressedViolations; } - /** - * {@inheritDoc} - */ - public String render(Report report) { - StringWriter w = new StringWriter(); - try { - render(w, report); - } catch (IOException e) { - throw new Error("StringWriter doesn't throw IOException", e); - } - return w.toString(); - } - /** * {@inheritDoc} */ @@ -116,37 +97,4 @@ public abstract class AbstractRenderer implements Renderer { public Writer getWriter() { return writer; } - - /** - * {@inheritDoc} - */ - public void start() throws IOException { - // default (and backward compatible) behavior is to build a full report. - // Optimized rendering is done in AbstractIncrementalRenderer and descendants - mainReport = new Report(); - } - - /** - * {@inheritDoc} - */ - public void startFileAnalysis(DataSource dataSource) { - } - - /** - * {@inheritDoc} - */ - public void renderFileReport(Report report) throws IOException { - // default (and backward compatible) behavior is to build a full report. - // Optimized rendering is done in AbstractIncrementalRenderer and descendants - mainReport.merge(report); - } - - /** - * {@inheritDoc} - */ - public void end() throws IOException { - // default (and backward compatible) behavior is to build a full report. - // Optimized rendering is done in AbstractIncrementalRenderer and descendants - render(writer, mainReport); - } } diff --git a/pmd/src/net/sourceforge/pmd/renderers/CSVRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/CSVRenderer.java index 8dcab80640..a1ac030101 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/CSVRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/CSVRenderer.java @@ -15,7 +15,7 @@ import net.sourceforge.pmd.util.StringUtil; /** * Renderer to comma separated format. */ -public class CSVRenderer extends AbstractIncrementalRenderer { +public class CSVRenderer extends AbstractIncrementingRenderer { public static final String NAME = "csv"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/EmacsRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/EmacsRenderer.java index 8b0730ab63..e16e93b9b8 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/EmacsRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/EmacsRenderer.java @@ -13,7 +13,7 @@ import net.sourceforge.pmd.RuleViolation; /** * Renderer to GNU Emacs parsable format. */ -public class EmacsRenderer extends AbstractIncrementalRenderer { +public class EmacsRenderer extends AbstractIncrementingRenderer { public static final String NAME = "emacs"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/HTMLRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/HTMLRenderer.java index 18d920c716..9a025386fd 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/HTMLRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/HTMLRenderer.java @@ -17,7 +17,7 @@ import net.sourceforge.pmd.util.StringUtil; /** * Renderer to basic HTML format. */ -public class HTMLRenderer extends AbstractIncrementalRenderer { +public class HTMLRenderer extends AbstractIncrementingRenderer { public static final String NAME = "html"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/IDEAJRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/IDEAJRenderer.java index 7a74b17857..0994981aa5 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/IDEAJRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/IDEAJRenderer.java @@ -17,7 +17,7 @@ import net.sourceforge.pmd.RuleViolation; /** * Renderer for IntelliJ IDEA integration. */ -public class IDEAJRenderer extends AbstractIncrementalRenderer { +public class IDEAJRenderer extends AbstractIncrementingRenderer { public static final String NAME = "ideaj"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/Renderer.java b/pmd/src/net/sourceforge/pmd/renderers/Renderer.java index 72db6a8309..e845e07d17 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/Renderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/Renderer.java @@ -76,29 +76,6 @@ public interface Renderer { */ void setShowSuppressedViolations(boolean showSuppressedViolations); - /** - * - * @deprecated This method consumes too much memory. - * Use the render method with the Writer argument instead. - * - * @param report Report - * @return String - */ - // TODO Remove this - String render(Report report); - - /** - * - * @deprecated This method consumes too much memory. - * Use the start, renderFileReport and end methods instead. - * - * @param writer Writer - * @param report Report - * @throws IOException - */ - // TODO Remove this - void render(Writer writer, Report report) throws IOException; - /** * Get the Writer for the Renderer. * @return The Writer. diff --git a/pmd/src/net/sourceforge/pmd/renderers/SummaryHTMLRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/SummaryHTMLRenderer.java index eceb60b9f9..a2143411b0 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/SummaryHTMLRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/SummaryHTMLRenderer.java @@ -4,17 +4,15 @@ package net.sourceforge.pmd.renderers; import java.io.IOException; -import java.io.Writer; import java.util.Map; import java.util.Properties; import net.sourceforge.pmd.PMD; -import net.sourceforge.pmd.Report; /** * Renderer to a summarized HTML format. */ -public class SummaryHTMLRenderer extends AbstractRenderer { +public class SummaryHTMLRenderer extends AbstractAccumulatingRenderer { public static final String NAME = "summaryhtml"; @@ -32,9 +30,10 @@ public class SummaryHTMLRenderer extends AbstractRenderer { /** * {@inheritDoc} */ - public void render(Writer writer, Report report) throws IOException { + @Override + public void end() throws IOException { writer.write("PMD" + PMD.EOL); - renderSummary(writer, report); + renderSummary(); writer.write("

Detail

"); writer.write("" + PMD.EOL); new HTMLRenderer(properties).renderBody(writer, report); @@ -44,11 +43,9 @@ public class SummaryHTMLRenderer extends AbstractRenderer { /** * Write a Summary HTML table. * - * @param writer Writer to write to. - * @param report Report to write. * @throws IOException */ - public void renderSummary(Writer writer, Report report) throws IOException { + public void renderSummary() throws IOException { StringBuffer buf = new StringBuffer(500); buf.append("

Summary

"); buf.append("
"); diff --git a/pmd/src/net/sourceforge/pmd/renderers/TextColorRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/TextColorRenderer.java index 131fba2a54..ad573ebadb 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/TextColorRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/TextColorRenderer.java @@ -9,7 +9,6 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; -import java.io.Writer; import java.util.Iterator; import java.util.Map; import java.util.Properties; @@ -48,7 +47,7 @@ import net.sourceforge.pmd.RuleViolation; * colorization is atm only supported under *nix terminals accepting ansi escape * sequences, such as xterm, rxvt et cetera.

*/ -public class TextColorRenderer extends AbstractRenderer { +public class TextColorRenderer extends AbstractAccumulatingRenderer { public static final String NAME = "textcolor"; @@ -97,7 +96,8 @@ public class TextColorRenderer extends AbstractRenderer { /** * {@inheritDoc} */ - public void render(Writer writer, Report report) throws IOException { + @Override + public void end() throws IOException { StringBuffer buf = new StringBuffer(500); buf.append(PMD.EOL); initializeColorsIfSupported(); diff --git a/pmd/src/net/sourceforge/pmd/renderers/TextPadRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/TextPadRenderer.java index 651eab51f0..d39a275c94 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/TextPadRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/TextPadRenderer.java @@ -26,7 +26,7 @@ import net.sourceforge.pmd.RuleViolation; * * @author Jeff Epstein, based upon EmacsRenderer, Tuesday, September 23, 2003 */ -public class TextPadRenderer extends AbstractIncrementalRenderer { +public class TextPadRenderer extends AbstractIncrementingRenderer { public static final String NAME = "textpad"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/TextRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/TextRenderer.java index df1a7017bd..d27cba7d80 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/TextRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/TextRenderer.java @@ -15,12 +15,10 @@ import net.sourceforge.pmd.RuleViolation; /** * Renderer to simple text format. */ -public class TextRenderer extends AbstractIncrementalRenderer { +public class TextRenderer extends AbstractIncrementingRenderer { public static final String NAME = "text"; - private boolean empty; - public TextRenderer(Properties properties) { super(NAME, "Text format.", properties); } @@ -30,7 +28,6 @@ public class TextRenderer extends AbstractIncrementalRenderer { */ @Override public void start() throws IOException { - empty = true; } /** @@ -41,7 +38,6 @@ public class TextRenderer extends AbstractIncrementalRenderer { Writer writer = getWriter(); StringBuffer buf = new StringBuffer(); - empty = !violations.hasNext(); while (violations.hasNext()) { buf.setLength(0); RuleViolation rv = violations.next(); @@ -60,7 +56,6 @@ public class TextRenderer extends AbstractIncrementalRenderer { Writer writer = getWriter(); StringBuffer buf = new StringBuffer(500); if (!errors.isEmpty()) { - empty = false; for (Report.ProcessingError error : errors) { buf.setLength(0); diff --git a/pmd/src/net/sourceforge/pmd/renderers/VBHTMLRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/VBHTMLRenderer.java index ddba6d3e39..312823a155 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/VBHTMLRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/VBHTMLRenderer.java @@ -16,7 +16,7 @@ import net.sourceforge.pmd.RuleViolation; * Renderer to another HTML format. * @author Vladimir */ -public class VBHTMLRenderer extends AbstractIncrementalRenderer { +public class VBHTMLRenderer extends AbstractIncrementingRenderer { public static final String NAME = "vbhtml"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/XMLRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/XMLRenderer.java index a85c344121..662c86e2ed 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/XMLRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/XMLRenderer.java @@ -18,7 +18,7 @@ import net.sourceforge.pmd.util.StringUtil; /** * Renderer to XML format. */ -public class XMLRenderer extends AbstractIncrementalRenderer { +public class XMLRenderer extends AbstractIncrementingRenderer { public static final String NAME = "xml"; diff --git a/pmd/src/net/sourceforge/pmd/renderers/YAHTMLRenderer.java b/pmd/src/net/sourceforge/pmd/renderers/YAHTMLRenderer.java index 50e729e4af..30337fcbed 100644 --- a/pmd/src/net/sourceforge/pmd/renderers/YAHTMLRenderer.java +++ b/pmd/src/net/sourceforge/pmd/renderers/YAHTMLRenderer.java @@ -4,17 +4,15 @@ package net.sourceforge.pmd.renderers; import java.io.IOException; -import java.io.Writer; import java.util.Properties; -import net.sourceforge.pmd.Report; import net.sourceforge.pmd.lang.dfa.report.ReportHTMLPrintVisitor; import net.sourceforge.pmd.lang.dfa.report.ReportTree; /** * Renderer to another HTML format. */ -public class YAHTMLRenderer extends AbstractRenderer { +public class YAHTMLRenderer extends AbstractAccumulatingRenderer { public static final String NAME = "yahtml"; @@ -33,7 +31,8 @@ public class YAHTMLRenderer extends AbstractRenderer { /** * {@inheritDoc} */ - public void render(Writer writer, Report report) throws IOException { + @Override + public void end() throws IOException { ReportTree tree = report.getViolationTree(); tree.getRootNode().accept(new ReportHTMLPrintVisitor(outputDir == null ? ".." : outputDir)); writer.write("

The HTML files are located "