private CpdResult run()

in src/main/java/org/apache/maven/plugins/pmd/exec/CpdExecutor.java [147:195]


    private CpdResult run() throws MavenReportException {
        setupPmdLogging(request.isShowPmdLog(), request.getLogLevel());

        try {
            excludeDuplicationsFromFile.loadExcludeFromFailuresData(request.getExcludeFromFailureFile());
        } catch (MojoExecutionException e) {
            throw new MavenReportException("Error loading exclusions", e);
        }

        CPDConfiguration cpdConfiguration = new CPDConfiguration();
        cpdConfiguration.setMinimumTileSize(request.getMinimumTokens());

        Language cpdLanguage;
        if ("java".equals(request.getLanguage()) || null == request.getLanguage()) {
            cpdLanguage = new JavaLanguage(request.getLanguageProperties());
        } else if ("javascript".equals(request.getLanguage())) {
            cpdLanguage = new EcmascriptLanguage();
        } else if ("jsp".equals(request.getLanguage())) {
            cpdLanguage = new JSPLanguage();
        } else {
            cpdLanguage = LanguageFactory.createLanguage(request.getLanguage(), request.getLanguageProperties());
        }

        cpdConfiguration.setLanguage(cpdLanguage);
        cpdConfiguration.setSourceEncoding(request.getSourceEncoding());

        CPD cpd = new CPD(cpdConfiguration);
        try {
            cpd.add(request.getFiles());
        } catch (IOException e) {
            throw new MavenReportException(e.getMessage(), e);
        }

        LOG.debug("Executing CPD...");
        cpd.go();
        LOG.debug("CPD finished.");

        // always create XML format. we need to output it even if the file list is empty or we have no duplications
        // so the "check" goals can check for violations
        writeXmlReport(cpd);

        // html format is handled by maven site report, xml format has already been rendered
        String format = request.getFormat();
        if (!"html".equals(format) && !"xml".equals(format)) {
            writeFormattedReport(cpd);
        }

        return new CpdResult(new File(request.getTargetDirectory(), "cpd.xml"), request.getOutputEncoding());
    }