Skip to content

Commit 471ecd2

Browse files
committed
[MCHECKSTYLE-412] Exclude generated sources / test-sources from default source / test-source directories
1 parent 472ed5a commit 471ecd2

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

src/main/java/org/apache/maven/plugins/checkstyle/AbstractCheckstyleReport.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.io.FileOutputStream;
2525
import java.io.IOException;
2626
import java.io.OutputStream;
27+
import java.nio.file.Path;
2728
import java.util.ArrayList;
2829
import java.util.List;
2930
import java.util.Locale;
@@ -698,7 +699,7 @@ private boolean checkMavenJxrPluginIsConfigured() {
698699

699700
protected List<File> getSourceDirectories() {
700701
if (sourceDirectories == null) {
701-
sourceDirectories = project.getCompileSourceRoots();
702+
sourceDirectories = filterBuildTarget(project.getCompileSourceRoots());
702703
}
703704
List<File> sourceDirs = new ArrayList<>(sourceDirectories.size());
704705
for (String sourceDir : sourceDirectories) {
@@ -709,12 +710,27 @@ protected List<File> getSourceDirectories() {
709710

710711
protected List<File> getTestSourceDirectories() {
711712
if (testSourceDirectories == null) {
712-
testSourceDirectories = project.getTestCompileSourceRoots();
713+
testSourceDirectories = filterBuildTarget(project.getTestCompileSourceRoots());
713714
}
714715
List<File> testSourceDirs = new ArrayList<>(testSourceDirectories.size());
715716
for (String testSourceDir : testSourceDirectories) {
716717
testSourceDirs.add(FileUtils.resolveFile(project.getBasedir(), testSourceDir));
717718
}
718719
return testSourceDirs;
719720
}
721+
722+
private List<String> filterBuildTarget(List<String> sourceDirectories) {
723+
List<String> filtered = new ArrayList<>(sourceDirectories.size());
724+
Path buildTarget = FileUtils.resolveFile(
725+
project.getBasedir(), project.getBuild().getDirectory())
726+
.toPath();
727+
728+
for (String sourceDir : sourceDirectories) {
729+
Path src = FileUtils.resolveFile(project.getBasedir(), sourceDir).toPath();
730+
if (!src.startsWith(buildTarget)) {
731+
filtered.add(sourceDir);
732+
}
733+
}
734+
return filtered;
735+
}
720736
}

src/main/java/org/apache/maven/plugins/checkstyle/CheckstyleViolationCheckMojo.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.io.OutputStream;
2828
import java.io.Reader;
2929
import java.nio.file.Files;
30+
import java.nio.file.Path;
3031
import java.util.ArrayList;
3132
import java.util.Collections;
3233
import java.util.List;
@@ -833,7 +834,7 @@ private List<Artifact> getCheckstylePluginDependenciesAsArtifacts(Map<String, Pl
833834

834835
private List<File> getSourceDirectories() {
835836
if (sourceDirectories == null) {
836-
sourceDirectories = project.getCompileSourceRoots();
837+
sourceDirectories = filterBuildTarget(project.getCompileSourceRoots());
837838
}
838839
List<File> sourceDirs = new ArrayList<>(sourceDirectories.size());
839840
for (String sourceDir : sourceDirectories) {
@@ -844,12 +845,27 @@ private List<File> getSourceDirectories() {
844845

845846
private List<File> getTestSourceDirectories() {
846847
if (testSourceDirectories == null) {
847-
testSourceDirectories = project.getTestCompileSourceRoots();
848+
testSourceDirectories = filterBuildTarget(project.getTestCompileSourceRoots());
848849
}
849850
List<File> testSourceDirs = new ArrayList<>(testSourceDirectories.size());
850851
for (String testSourceDir : testSourceDirectories) {
851852
testSourceDirs.add(FileUtils.resolveFile(project.getBasedir(), testSourceDir));
852853
}
853854
return testSourceDirs;
854855
}
856+
857+
private List<String> filterBuildTarget(List<String> sourceDirectories) {
858+
List<String> filtered = new ArrayList<>(sourceDirectories.size());
859+
Path buildTarget = FileUtils.resolveFile(
860+
project.getBasedir(), project.getBuild().getDirectory())
861+
.toPath();
862+
863+
for (String sourceDir : sourceDirectories) {
864+
Path src = FileUtils.resolveFile(project.getBasedir(), sourceDir).toPath();
865+
if (!src.startsWith(buildTarget)) {
866+
filtered.add(sourceDir);
867+
}
868+
}
869+
return filtered;
870+
}
855871
}

src/test/java/org/apache/maven/plugins/checkstyle/CheckstyleViolationCheckMojoTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
import java.io.File;
2222
import java.util.Arrays;
23+
import java.util.Collections;
24+
import java.util.List;
2325

2426
import org.apache.maven.model.Build;
2527
import org.apache.maven.plugin.Mojo;
@@ -142,6 +144,16 @@ public File getFile() {
142144
return new File(getBasedir(), "target/classes");
143145
}
144146

147+
@Override
148+
public List<String> getCompileSourceRoots() {
149+
return Collections.emptyList();
150+
}
151+
152+
@Override
153+
public List<String> getTestCompileSourceRoots() {
154+
return Collections.emptyList();
155+
}
156+
145157
public Build getBuild() {
146158
return new Build() {
147159
private static final long serialVersionUID = -743084937617131258L;

0 commit comments

Comments
 (0)