/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.renderers;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.Report;
import net.sourceforge.pmd.RuleViolation;
/**
* Renderer to simple text format.
*/
public class TextRenderer extends AbstractIncrementingRenderer {
public static final String NAME = "text";
public TextRenderer() {
super(NAME, "Text format.");
}
@Override
public String defaultFileExtension() {
return "txt";
}
/**
* {@inheritDoc}
*/
@Override
public void start() throws IOException {
}
/**
* {@inheritDoc}
*/
@Override
public void renderFileViolations(Iterator<RuleViolation> violations) throws IOException {
Writer writer = getWriter();
StringBuilder buf = new StringBuilder();
while (violations.hasNext()) {
buf.setLength(0);
RuleViolation rv = violations.next();
buf.append(rv.getFilename());
buf.append(':').append(Integer.toString(rv.getBeginLine()));
buf.append(":\t").append(rv.getDescription()).append(PMD.EOL);
writer.write(buf.toString());
}
}
/**
* {@inheritDoc}
*/
@Override
public void end() throws IOException {
Writer writer = getWriter();
StringBuilder buf = new StringBuilder(500);
if (!errors.isEmpty()) {
for (Report.ProcessingError error : errors) {
buf.setLength(0);
buf.append(error.getFile());
buf.append("\t-\t").append(error.getMsg()).append(PMD.EOL);
writer.write(buf.toString());
}
}
for (Report.SuppressedViolation excluded : suppressed) {
buf.setLength(0);
buf.append(excluded.getRuleViolation().getRule().getName());
buf.append(" rule violation suppressed by ");
buf.append(excluded.suppressedByNOPMD() ? "//NOPMD" : "Annotation");
buf.append(" in ").append(excluded.getRuleViolation().getFilename()).append(PMD.EOL);
writer.write(buf.toString());
}
}
}