in src/main/java/org/apache/maven/plugins/pmd/AbstractPmdReport.java [309:396]
protected Map<File, PmdFileInfo> getFilesToProcess() throws IOException {
if (aggregate && !project.isExecutionRoot()) {
return Collections.emptyMap();
}
if (excludeRoots == null) {
excludeRoots = new File[0];
}
Collection<File> excludeRootFiles = new HashSet<>(excludeRoots.length);
for (File file : excludeRoots) {
if (file.isDirectory()) {
excludeRootFiles.add(file);
}
}
List<PmdFileInfo> directories = new ArrayList<>();
if (null == compileSourceRoots) {
compileSourceRoots = project.getCompileSourceRoots();
}
if (compileSourceRoots != null) {
for (String root : compileSourceRoots) {
File sroot = new File(root);
if (sroot.exists()) {
String sourceXref = constructXRefLocation(false);
directories.add(new PmdFileInfo(project, sroot, sourceXref));
}
}
}
if (null == testSourceRoots) {
testSourceRoots = project.getTestCompileSourceRoots();
}
if (includeTests && testSourceRoots != null) {
for (String root : testSourceRoots) {
File sroot = new File(root);
if (sroot.exists()) {
String testXref = constructXRefLocation(true);
directories.add(new PmdFileInfo(project, sroot, testXref));
}
}
}
if (isAggregator()) {
for (MavenProject localProject : getAggregatedProjects()) {
List<String> localCompileSourceRoots = localProject.getCompileSourceRoots();
for (String root : localCompileSourceRoots) {
File sroot = new File(root);
if (sroot.exists()) {
String sourceXref = constructXRefLocation(false);
directories.add(new PmdFileInfo(localProject, sroot, sourceXref));
}
}
if (includeTests) {
List<String> localTestCompileSourceRoots = localProject.getTestCompileSourceRoots();
for (String root : localTestCompileSourceRoots) {
File sroot = new File(root);
if (sroot.exists()) {
String testXref = constructXRefLocation(true);
directories.add(new PmdFileInfo(localProject, sroot, testXref));
}
}
}
}
}
String excluding = getExcludes();
getLog().debug("Exclusions: " + excluding);
String including = getIncludes();
getLog().debug("Inclusions: " + including);
Map<File, PmdFileInfo> files = new TreeMap<>();
for (PmdFileInfo finfo : directories) {
getLog().debug("Searching for files in directory "
+ finfo.getSourceDirectory().toString());
File sourceDirectory = finfo.getSourceDirectory();
if (sourceDirectory.isDirectory() && !isDirectoryExcluded(excludeRootFiles, sourceDirectory)) {
List<File> newfiles = FileUtils.getFiles(sourceDirectory, including, excluding);
for (File newfile : newfiles) {
files.put(newfile.getCanonicalFile(), finfo);
}
}
}
return files;
}