Search in sources :

Example 1 with Renderer

use of net.sourceforge.pmd.renderers.Renderer in project Gargoyle by callakrsos.

the class PMDGargoyleThreadProcessor method processFiles.

public void processFiles(RuleSetFactory ruleSetFactory, List<DataSource> files, RuleContext ctx, List<Renderer> renderers) {
    // single threaded execution
    RuleSets rs = createRuleSets(ruleSetFactory);
    SourceCodeProcessor processor = new SourceCodeProcessor(configuration);
    for (DataSource dataSource : files) {
        String niceFileName = filenameFrom(dataSource);
        Report report = PMD.setupReport(rs, ctx, niceFileName);
        // overtake the listener
        //bug fix 2016-10-05 by kyj. 결과가 중복되서 출력됨.
        //			report.addSynchronizedListeners(ctx.getReport().getSynchronizedListeners());
        //	        ctx.setReport(report);
        //	        ctx.setSourceCodeFilename(niceFileName);
        //			if (LOG.isLoggable(Level.FINE)) {
        //				LOG.fine("Processing " + ctx.getSourceCodeFilename());
        //			}
        rs.start(ctx);
        for (Renderer r : renderers) {
            r.startFileAnalysis(dataSource);
        }
        try {
            InputStream stream = new BufferedInputStream(dataSource.getInputStream());
            //				ctx.setLanguageVersion(null);
            processor.processSourceCode(stream, rs, ctx);
        } catch (PMDException pmde) {
            //				LOGGER.error(ValueUtil.toString(pmde));
            //				if (LOG.isLoggable(Level.FINE)) {
            //					LOG.log(Level.FINE, "Error while processing file: " + niceFileName, pmde.getCause());
            //				}
            report.addError(new Report.ProcessingError(pmde.getMessage(), niceFileName));
        } catch (IOException ioe) {
            //				LOGGER.error(ValueUtil.toString(ioe));
            // unexpected exception: log and stop executor service
            addError(report, "Unable to read source file", ioe, niceFileName);
        } catch (RuntimeException re) {
            //				LOGGER.error(ValueUtil.toString(re));
            // unexpected exception: log and stop executor service
            addError(report, "RuntimeException while processing file", re, niceFileName);
        } catch (Exception e) {
            LOGGER.error(ValueUtil.toString(e));
        }
        rs.end(ctx);
        super.renderReports(renderers, ctx.getReport());
    }
}
Also used : Report(net.sourceforge.pmd.Report) BufferedInputStream(java.io.BufferedInputStream) InputStream(java.io.InputStream) SourceCodeProcessor(net.sourceforge.pmd.SourceCodeProcessor) IOException(java.io.IOException) PMDException(net.sourceforge.pmd.PMDException) IOException(java.io.IOException) DataSource(net.sourceforge.pmd.util.datasource.DataSource) BufferedInputStream(java.io.BufferedInputStream) RuleSets(net.sourceforge.pmd.RuleSets) Renderer(net.sourceforge.pmd.renderers.Renderer) PMDException(net.sourceforge.pmd.PMDException)

Example 2 with Renderer

use of net.sourceforge.pmd.renderers.Renderer in project Gargoyle by callakrsos.

the class DoPMD method doPMD.

public int doPMD(GargoylePMDConfiguration configuration, List<ReportListener> listeners) {
    renerderWriter = RendererWriterFactory.get(WRITER_TYPE.StringWriter);
    // Load the RuleSets
    RuleSetFactory ruleSetFactory = RulesetsFactoryUtils.getRulesetFactory(configuration);
    RuleSets ruleSets = RulesetsFactoryUtils.getRuleSetsWithBenchmark(configuration.getRuleSets(), ruleSetFactory);
    if (ruleSets == null) {
        return 0;
    }
    Set<Language> languages = getApplicableLanguages(configuration, ruleSets);
    List<DataSource> files = getApplicableFiles(configuration, languages);
    long reportStart = System.nanoTime();
    try {
        //			Renderer renderer = RendererFactory.createRenderer(configuration.getReportFormat(), configuration.getReportProperties()); //configuration.createRenderer();//createDefaultRenderer();
        List<Renderer> renderers = new LinkedList<>();
        //configuration.createRenderer();
        Renderer renderer = new DatabaseXmlRenderer();
        renderer.setWriter(renerderWriter.getWriter());
        renderer.start();
        renderers.add(renderer);
        Benchmarker.mark(Benchmark.Reporting, System.nanoTime() - reportStart, 0);
        RuleContext ctx = new RuleContext();
        final AtomicInteger violations = new AtomicInteger(0);
        ctx.getReport().addListener(new ReportListener() {

            @Override
            public void ruleViolationAdded(RuleViolation ruleViolation) {
                violations.incrementAndGet();
            }

            @Override
            public void metricAdded(Metric metric) {
            }
        });
        if (listeners != null && !listeners.isEmpty()) {
            for (ReportListener l : listeners) ctx.getReport().addListener(l);
        }
        processFiles(configuration, ruleSetFactory, files, ctx, renderers);
        reportStart = System.nanoTime();
        //				renderer.renderFileReport();
        renderer.end();
        renderer.flush();
        return violations.get();
    } catch (Exception e) {
        LOGGER.error(ValueUtil.toString(e));
        return 0;
    } finally {
        Benchmarker.mark(Benchmark.Reporting, System.nanoTime() - reportStart, 0);
        try {
            close();
        } catch (IOException e) {
            LOGGER.error(ValueUtil.toString(e));
        }
    }
}
Also used : ReportListener(net.sourceforge.pmd.ReportListener) RuleContext(net.sourceforge.pmd.RuleContext) RuleViolation(net.sourceforge.pmd.RuleViolation) IOException(java.io.IOException) LinkedList(java.util.LinkedList) IOException(java.io.IOException) DataSource(net.sourceforge.pmd.util.datasource.DataSource) ReaderDataSource(net.sourceforge.pmd.util.datasource.ReaderDataSource) RuleSetFactory(net.sourceforge.pmd.RuleSetFactory) Language(net.sourceforge.pmd.lang.Language) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) RuleSets(net.sourceforge.pmd.RuleSets) Renderer(net.sourceforge.pmd.renderers.Renderer) Metric(net.sourceforge.pmd.stat.Metric)

Example 3 with Renderer

use of net.sourceforge.pmd.renderers.Renderer in project maven-plugins by apache.

the class PmdReport method writeNonHtml.

/**
     * Use the PMD renderers to render in any format aside from HTML.
     *
     * @param report
     * @throws MavenReportException
     */
private void writeNonHtml(Report report) throws MavenReportException {
    Renderer r = createRenderer();
    if (r == null) {
        return;
    }
    File targetFile = new File(targetDirectory, "pmd." + format);
    try (Writer writer = new OutputStreamWriter(new FileOutputStream(targetFile), getOutputEncoding())) {
        targetDirectory.mkdirs();
        r.setWriter(writer);
        r.start();
        r.renderFileReport(report);
        r.end();
        if (includeXmlInSite) {
            File siteDir = getReportOutputDirectory();
            siteDir.mkdirs();
            FileUtils.copyFile(targetFile, new File(siteDir, "pmd." + format));
        }
    } catch (IOException ioe) {
        throw new MavenReportException(ioe.getMessage(), ioe);
    }
}
Also used : FileOutputStream(java.io.FileOutputStream) HTMLRenderer(net.sourceforge.pmd.renderers.HTMLRenderer) XMLRenderer(net.sourceforge.pmd.renderers.XMLRenderer) CSVRenderer(net.sourceforge.pmd.renderers.CSVRenderer) Renderer(net.sourceforge.pmd.renderers.Renderer) TextRenderer(net.sourceforge.pmd.renderers.TextRenderer) OutputStreamWriter(java.io.OutputStreamWriter) IOException(java.io.IOException) File(java.io.File) OutputStreamWriter(java.io.OutputStreamWriter) Writer(java.io.Writer) MavenReportException(org.apache.maven.reporting.MavenReportException)

Example 4 with Renderer

use of net.sourceforge.pmd.renderers.Renderer in project Gargoyle by callakrsos.

the class GargoylePMDConfiguration method createRenderer.

/**
	 * Create a Renderer instance based upon the configured reporting options. If withReportWriter then we'll configure it with a writer for the reportFile specified.
	 *
	 * @param withReportWriter
	 *            whether to configure a writer or not
	 * @return A Renderer instance.
	 */
public Renderer createRenderer(boolean withReportWriter) {
    Renderer renderer = RendererFactory.createRenderer(reportFormat, reportProperties);
    renderer.setShowSuppressedViolations(showSuppressedViolations);
    if (withReportWriter) {
        renderer.setWriter(IOUtil.createWriter(reportFile));
    }
    return renderer;
}
Also used : Renderer(net.sourceforge.pmd.renderers.Renderer)

Aggregations

Renderer (net.sourceforge.pmd.renderers.Renderer)4 IOException (java.io.IOException)3 RuleSets (net.sourceforge.pmd.RuleSets)2 DataSource (net.sourceforge.pmd.util.datasource.DataSource)2 BufferedInputStream (java.io.BufferedInputStream)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 InputStream (java.io.InputStream)1 OutputStreamWriter (java.io.OutputStreamWriter)1 Writer (java.io.Writer)1 LinkedList (java.util.LinkedList)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 PMDException (net.sourceforge.pmd.PMDException)1 Report (net.sourceforge.pmd.Report)1 ReportListener (net.sourceforge.pmd.ReportListener)1 RuleContext (net.sourceforge.pmd.RuleContext)1 RuleSetFactory (net.sourceforge.pmd.RuleSetFactory)1 RuleViolation (net.sourceforge.pmd.RuleViolation)1 SourceCodeProcessor (net.sourceforge.pmd.SourceCodeProcessor)1 Language (net.sourceforge.pmd.lang.Language)1