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());
}