AbstractIncrementingRenderer xref

View Javadoc
1 /**
2  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 
3  */
4 package net.sourceforge.pmd.renderers;
5 
6 import java.io.IOException;
7 import java.util.Iterator;
8 import java.util.LinkedList;
9 import java.util.List;
10 
11 import net.sourceforge.pmd.Report;
12 import net.sourceforge.pmd.RuleViolation;
13 import net.sourceforge.pmd.util.datasource.DataSource;
14 
15 /**
16  * Abstract base class for {@link Renderer} implementations which can produce
17  * output incrementally for {@link RuleViolation}s as source files are
18  * processed. Such {@link Renderer}s are able to produce large reports with
19  * significantly less working memory at any given time. Variations in the
20  * delivery of source file reports are reflected in the output of the
21  * {@link Renderer}, so report output can be different between runs.
22  * 
23  * Only processing errors and suppressed violations are accumulated across all
24  * files. These are intended to be processed in the {@link #end()} method.
25  */
26 public abstract class AbstractIncrementingRenderer extends AbstractRenderer {
27 
28 /**
29  * Accumulated processing errors.
30  */
31 protected List<Report.ProcessingError> errors = new LinkedList<Report.ProcessingError>();
32 
33 /**
34  * Accumulated suppressed violations.
35  */
36 protected List<Report.SuppressedViolation> suppressed = new LinkedList<Report.SuppressedViolation>();
37 
38 public AbstractIncrementingRenderer(String name, String description) {
39 	super(name, description);
40 }
41 
42 /**
43  * {@inheritDoc}
44  */
45 public void start() throws IOException {
46 }
47 
48 /**
49  * {@inheritDoc}
50  */
51 public void startFileAnalysis(DataSource dataSource) {
52 }
53 
54 /**
55  * {@inheritDoc}
56  */
57 public void renderFileReport(Report report) throws IOException {
58 	Iterator<RuleViolation> violations = report.iterator();
59 	if (violations.hasNext()) {
60 	 renderFileViolations(violations);
61 	 getWriter().flush();
62 	}
63 
64 	for (Iterator<Report.ProcessingError> i = report.errors(); i.hasNext();) {
65 	 errors.add(i.next());
66 	}
67 
68 	if (showSuppressedViolations) {
69 	 suppressed.addAll(report.getSuppressedRuleViolations());
70 	}
71 }
72 
73 /**
74  * Render a series of {@link RuleViolation}s.
75  * @param violations The iterator of violations to render.
76  * @throws IOException
77  */
78 public abstract void renderFileViolations(Iterator<RuleViolation> violations) throws IOException;
79 
80 /**
81  * {@inheritDoc}
82  */
83 public void end() throws IOException {
84 }
85 }

AltStyle によって変換されたページ (->オリジナル) /