diff --git a/pom.xml b/pom.xml
index a7235123..ef720352 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
edu.hm.hafner
codingstyle-pom
- 2.0.2
+ 2.0.3
@@ -31,7 +31,7 @@
edu.hm.hafner
autograding-model
- 1.2.1-SNAPSHOT
+ 1.3.0
edu.hm.hafner
@@ -43,7 +43,7 @@
edu.hm.hafner
analysis-model
- 10.0.0-rc3954.8c8ecf529a7e
+ 10.0.0-rc3980.fd5b09344558
diff --git a/src/main/java/edu/hm/hafner/grading/AutoGradingAction.java b/src/main/java/edu/hm/hafner/grading/AutoGradingAction.java
index 2ebf583b..61d7e84b 100644
--- a/src/main/java/edu/hm/hafner/grading/AutoGradingAction.java
+++ b/src/main/java/edu/hm/hafner/grading/AutoGradingAction.java
@@ -5,6 +5,7 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
@@ -50,32 +51,61 @@ void run() {
JacksonFacade jackson = new JacksonFacade();
- System.out.println("Test Configuration: " + jackson.toJson(score.getTestConfiguration()));
- System.out.println("Code Coverage Configuration: " + jackson.toJson(score.getCoverageConfiguration()));
- System.out.println("PIT Mutation Coverage Configuration: " + jackson.toJson(score.getPitConfiguration()));
- AnalysisConfiguration analysisConfiguration = score.getAnalysisConfiguration();
- System.out.println("Static Analysis Configuration: " + jackson.toJson(analysisConfiguration));
+ System.out.println("------------------------------------------------------------------");
+ System.out.println("------------------------ Configuration ---------------------------");
+ System.out.println("------------------------------------------------------------------");
+ System.out.println("-> Test Configuration: " + jackson.toJson(score.getTestConfiguration()));
+ System.out.println("-> Code Coverage Configuration: " + jackson.toJson(score.getCoverageConfiguration()));
+ System.out.println("-> PIT Mutation Coverage Configuration: " + jackson.toJson(score.getPitConfiguration()));
+ System.out.println("-> Static Analysis Configuration: " + jackson.toJson(score.getAnalysisConfiguration()));
GradingConfiguration configuration = new GradingConfiguration(jsonConfiguration);
- List testReports = new TestReportFinder().find(configuration.getTestPattern());
+ System.out.println("==================================================================");
+ List testReports = new TestReportFinder().find(configuration.getTestPattern());
score.addTestScores(new TestReportSupplier(testReports));
-
+ System.out.println("==================================================================");
List pitReports = new PitReportFinder().find();
score.addPitScores(new PitReportSupplier(pitReports));
-
+ System.out.println("==================================================================");
+ if (Files.isReadable(Paths.get(JACOCO_RESULTS))) {
+ JacocoReport coverageReport = new JacocoParser().parse(new FileReaderFactory(Paths.get(JACOCO_RESULTS)));
+ score.addCoverageScores(new CoverageReportSupplier(coverageReport));
+ }
+ else {
+ System.out.println("No JaCoCo coverage result files found!");
+ }
+ System.out.println("==================================================================");
+ ReportFinder reportFinder = new ReportFinder();
ParserRegistry registry = new ParserRegistry();
String[] tools = {CHECKSTYLE, PMD, SPOTBUGS};
List analysisReports = new ArrayList<>();
List analysisScores = new ArrayList<>();
+
for (String tool : tools) {
ParserDescriptor parser = registry.get(tool);
- Report report = parse(configuration, parser);
- analysisReports.add(report);
- analysisScores.add(createAnalysisScore(analysisConfiguration, parser.getName(), parser.getId(), report));
+ List files = reportFinder.find("target", "glob:" + parser.getPattern());
+ System.out.format("Searching for '%s' results matching file name pattern %s%n", parser.getName(), parser.getPattern());
+
+ if (files.size() == 0) {
+ System.out.println("No matching report result files found!");
+ }
+ else {
+ Collections.sort(files);
+
+ for (Path file : files) {
+ Report allIssues = parser.createParser().parse(new FileReaderFactory(file));
+ Report filteredIssues = filterAnalysisReport(allIssues, configuration.getAnalysisPattern());
+ System.out.format("- %s : %d warnings (from total %d)%n", file, filteredIssues.size(), allIssues.size());
+ analysisReports.add(filteredIssues);
+ analysisScores.add(createAnalysisScore(score.getAnalysisConfiguration(), parser.getName(),
+ parser.getId(), filteredIssues));
+ }
+ }
}
score.addAnalysisScores(new AnalysisReportSupplier(analysisScores));
+ System.out.println("==================================================================");
if (Files.isReadable(Paths.get(JACOCO_RESULTS))) {
JacocoReport coverageReport = new JacocoParser().parse(read(JACOCO_RESULTS));
@@ -97,7 +127,7 @@ void run() {
private String createAffectedFiles(final GradingConfiguration configuration) {
String analysisPattern = configuration.getAnalysisPattern();
if (StringUtils.isNotBlank(analysisPattern) && !StringUtils.equals(analysisPattern,
- GradingConfiguration.ALL_FILES)) {
+ GradingConfiguration.INCLUDE_ALL_FILES)) {
return "\n" + new ReportFinder().renderLinks("./", "regex:" + analysisPattern);
}
return StringUtils.EMPTY;
diff --git a/src/main/java/edu/hm/hafner/grading/GradingConfiguration.java b/src/main/java/edu/hm/hafner/grading/GradingConfiguration.java
index a6fbb191..8fe138a1 100644
--- a/src/main/java/edu/hm/hafner/grading/GradingConfiguration.java
+++ b/src/main/java/edu/hm/hafner/grading/GradingConfiguration.java
@@ -12,8 +12,8 @@
* @author Ullrich Hafner
*/
public class GradingConfiguration {
- static final String SUREFIRE_REPORT_PATTERN = "glob:./target/surefire-reports/*.xml";
- static final String ALL_FILES = ".*";
+ static final String SUREFIRE_DEFAULT_PATTERN = "./target/surefire-reports/*.xml";
+ static final String INCLUDE_ALL_FILES = ".*";
private final String testPattern;
private final String analysisPattern;
@@ -22,20 +22,20 @@ public class GradingConfiguration {
ObjectMapper mapper = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- testPattern = asString(configuration, mapper, "tests", SUREFIRE_REPORT_PATTERN);
- System.out.println("Using test file pattern: " + testPattern);
+ testPattern = asString(configuration, mapper, "tests", "pattern", SUREFIRE_DEFAULT_PATTERN);
+ System.out.println("-> Using test files pattern: " + testPattern);
- analysisPattern = asString(configuration, mapper, "analysis", ALL_FILES);
- System.out.println("Using analysis file pattern: " + analysisPattern);
+ analysisPattern = asString(configuration, mapper, "analysis", "fileFilter", INCLUDE_ALL_FILES);
+ System.out.println("-> Using file name filter (include) for static analysis: " + analysisPattern);
}
private String asString(final String configuration, final ObjectMapper mapper, final String type,
- final String defaultValue) {
+ final String propertyName, final String defaultValue) {
try {
ObjectNode node = mapper.readValue(configuration, ObjectNode.class);
- JsonNode tests = node.get(type);
- if (tests != null) {
- JsonNode pattern = tests.get("pattern");
+ JsonNode typeNode = node.get(type);
+ if (typeNode != null) {
+ JsonNode pattern = typeNode.get(propertyName);
if (pattern != null) {
return pattern.asText(defaultValue);
}
@@ -48,7 +48,7 @@ private String asString(final String configuration, final ObjectMapper mapper, f
}
public String getTestPattern() {
- return testPattern;
+ return "glob:" + testPattern;
}
public String getAnalysisPattern() {
diff --git a/src/main/java/edu/hm/hafner/grading/PitReportFinder.java b/src/main/java/edu/hm/hafner/grading/PitReportFinder.java
index dfb24a5a..13ac6323 100644
--- a/src/main/java/edu/hm/hafner/grading/PitReportFinder.java
+++ b/src/main/java/edu/hm/hafner/grading/PitReportFinder.java
@@ -29,7 +29,8 @@ public List find() {
}
System.out.println("Reading PIT results: ");
- System.out.println(reportFiles);
+ Collections.sort(reportFiles);
+ reportFiles.forEach(file -> System.out.format("- %s%n", file));
PitAdapter parser = new PitAdapter();
return reportFiles.stream()
diff --git a/src/main/java/edu/hm/hafner/grading/TestReportFinder.java b/src/main/java/edu/hm/hafner/grading/TestReportFinder.java
index 749d7c1e..27f32fab 100644
--- a/src/main/java/edu/hm/hafner/grading/TestReportFinder.java
+++ b/src/main/java/edu/hm/hafner/grading/TestReportFinder.java
@@ -35,7 +35,7 @@ public List find(final String pattern) {
Collections.sort(reportFiles);
System.out.println("Reading test results: ");
- System.out.println(reportFiles);
+ reportFiles.forEach(file -> System.out.format("- %s%n", file));
JUnitAdapter parser = new JUnitAdapter();
return reportFiles.stream()
diff --git a/src/test/java/edu/hm/hafner/grading/GradingConfigurationTest.java b/src/test/java/edu/hm/hafner/grading/GradingConfigurationTest.java
index 9dba178d..6c822e6a 100644
--- a/src/test/java/edu/hm/hafner/grading/GradingConfigurationTest.java
+++ b/src/test/java/edu/hm/hafner/grading/GradingConfigurationTest.java
@@ -10,38 +10,40 @@
* @author Ullrich Hafner
*/
class GradingConfigurationTest {
+ private static final String DEFAULT_PATTERN = "glob:" + GradingConfiguration.SUREFIRE_DEFAULT_PATTERN;
+
@Test
void shouldReturnDefaultPattern() {
assertThat(new GradingConfiguration(
"{ \"tests\": {\"maxScore\":5,\"failureImpact\":1,\"passedImpact\":2,\"skippedImpact\":3}}")
- .getTestPattern()).isEqualTo(GradingConfiguration.SUREFIRE_REPORT_PATTERN);
+ .getTestPattern()).isEqualTo(DEFAULT_PATTERN);
assertThat(new GradingConfiguration("{ \"tests\": {}}").getTestPattern()).isEqualTo(
- GradingConfiguration.SUREFIRE_REPORT_PATTERN);
+ DEFAULT_PATTERN);
assertThat(new GradingConfiguration("{}").getTestPattern()).isEqualTo(
- GradingConfiguration.SUREFIRE_REPORT_PATTERN);
+ DEFAULT_PATTERN);
assertThat(new GradingConfiguration("").getTestPattern()).isEqualTo(
- GradingConfiguration.SUREFIRE_REPORT_PATTERN);
+ DEFAULT_PATTERN);
assertThat(new GradingConfiguration("<[+").getTestPattern()).isEqualTo(
- GradingConfiguration.SUREFIRE_REPORT_PATTERN);
+ DEFAULT_PATTERN);
assertThat(new GradingConfiguration("<[+").getTestPattern()).isEqualTo(
- GradingConfiguration.SUREFIRE_REPORT_PATTERN);
+ DEFAULT_PATTERN);
- assertThat(new GradingConfiguration("<[+").getAnalysisPattern()).isEqualTo(GradingConfiguration.ALL_FILES);
+ assertThat(new GradingConfiguration("<[+").getAnalysisPattern()).isEqualTo(GradingConfiguration.INCLUDE_ALL_FILES);
}
@Test
void shouldReturnProvidedTestPattern() {
assertThat(new GradingConfiguration(
"{ \"tests\": {\"pattern\":\"*/*.xml\", \"maxScore\":5,\"failureImpact\":1,\"passedImpact\":2,\"skippedImpact\":3}}")
- .getTestPattern()).isEqualTo("*/*.xml");
+ .getTestPattern()).isEqualTo("glob:*/*.xml");
}
@Test
void shouldReturnProvidedAnalysisPattern() {
assertThat(new GradingConfiguration("{\n"
+ " \"analysis\": {\n"
- + " \"pattern\": \"File.*\",\n"
+ + " \"fileFilter\": \"File.*\",\n"
+ " \"maxScore\": 100,\n"
+ " \"errorImpact\": -5,\n"
+ " \"highImpact\": -3,\n"