diff --git a/README.md b/README.md
index 047f79d6d..65f2bbd35 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ It has support for the following report formats:
- [JaCoCo](https://www.jacoco.org/) code coverage results
- [OpenCover](https://github.com/OpenCover/opencover) code coverage results
- [VectorCAST](https://www.vector.com/int/en/products/products-a-z/software/vectorcast) code coverage results including MC/DC, Function, Function Call coverages
+- [TRACE32](https://www.lauterbach.com) code coverage results
- [PIT](https://pitest.org/) mutation coverage results
- [JUnit](https://junit.org/junit5/) test results
- [NUnit](https://nunit.org) test results
@@ -114,6 +115,7 @@ The Coverage Plug-in supports the following report formats:
- [Cobertura](https://cobertura.github.io/cobertura/): Code Coverage
- [OpenCover](https://github.com/OpenCover/opencover): Code Coverage
- [VectorCAST](https://www.vector.com/int/en/products/products-a-z/software/vectorcast) Code Coverage including MC/DC, Function, Function Call coverages
+- [TRACE32](https://www.lauterbach.com) Code Coverage
- [PIT](https://pitest.org/): Mutation Coverage
- [JUnit](https://ant.apache.org/manual/Tasks/junitreport.html): Test Results
- [NUnit](https://nunit.org/): Test Results
diff --git a/plugin/pom.xml b/plugin/pom.xml
index 8c4855162..2e236a86d 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -13,7 +13,7 @@
Coverage Plugin
Collects reports of code coverage or mutation coverage tools and visualizes the results. It has support
- for the following report formats: JaCoCo, Cobertura, and PIT.
+ for the following report formats: JaCoCo, Cobertura, PIT and TRACE32.
https://github.com/jenkinsci/coverage-plugin
@@ -35,7 +35,7 @@
false
- 0.65.0
+ 0.66.0-rc1267.b_509b_0079b_61
2.11.0
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/charts/CoverageTrendChart.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/charts/CoverageTrendChart.java
index 795d63a70..4fc9b4831 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/charts/CoverageTrendChart.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/charts/CoverageTrendChart.java
@@ -63,6 +63,15 @@ public LinesChartModel create(final Iterable> re
addSeriesIfAvailable(dataSet, model, Metric.MCDC_PAIR, JenkinsPalette.RED.light());
addSeriesIfAvailable(dataSet, model, Metric.FUNCTION_CALL, JenkinsPalette.RED.dark());
+ /* TRACE32 metrics */
+ addSeriesIfAvailable(dataSet, model, Metric.STATEMENT, JenkinsPalette.RED.light());
+ addSeriesIfAvailable(dataSet, model, Metric.STMT_DC, JenkinsPalette.RED.light());
+ addSeriesIfAvailable(dataSet, model, Metric.STMT_CC, JenkinsPalette.RED.light());
+ addSeriesIfAvailable(dataSet, model, Metric.FUNCTION, JenkinsPalette.RED.light());
+ addSeriesIfAvailable(dataSet, model, Metric.OBJECT_CODE, JenkinsPalette.RED.light());
+ addSeriesIfAvailable(dataSet, model, Metric.DECISION, JenkinsPalette.RED.normal());
+ addSeriesIfAvailable(dataSet, model, Metric.CONDITION, JenkinsPalette.RED.normal());
+
model.useContinuousRangeAxis();
model.computeVisibleRange();
model.setRangeMax(100); // Restrict the range to 100%
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java
index 6692cd4ec..38b1b1641 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageBuildAction.java
@@ -649,7 +649,12 @@ NavigableSet getMetricsForSummary() {
// software metrics
Metric.LOC, Metric.NCSS, Metric.TESTS,
Metric.CYCLOMATIC_COMPLEXITY, Metric.COGNITIVE_COMPLEXITY, Metric.NPATH_COMPLEXITY,
- Metric.MCDC_PAIR, Metric.FUNCTION_CALL));
+ Metric.MCDC_PAIR, Metric.FUNCTION_CALL,
+ // TRACE32 metrics
+ Metric.STATEMENT, Metric.STMT_CC, Metric.STMT_DC,
+ Metric.CONDITION, Metric.DECISION, Metric.FUNCTION,
+ Metric.OBJECT_CODE, Metric.BYTES
+ ));
}
/**
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageChecksPublisher.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageChecksPublisher.java
index b1172e13c..062e5cad2 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageChecksPublisher.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageChecksPublisher.java
@@ -542,7 +542,9 @@ NavigableSet getOverviewMetrics() {
return new TreeSet<>(
Set.of(Metric.LINE, Metric.LOC, Metric.BRANCH, Metric.CYCLOMATIC_COMPLEXITY,
Metric.MUTATION, Metric.TEST_STRENGTH, Metric.TESTS,
- Metric.MCDC_PAIR, Metric.FUNCTION_CALL));
+ Metric.MCDC_PAIR, Metric.FUNCTION_CALL, Metric.STATEMENT,
+ Metric.STMT_DC, Metric.STMT_CC, Metric.CONDITION, Metric.DECISION,
+ Metric.FUNCTION, Metric.OBJECT_CODE, Metric.BYTES));
}
}
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTableModel.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTableModel.java
index b5de91577..e9245d0a0 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTableModel.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTableModel.java
@@ -129,6 +129,16 @@ public List getColumns() {
configureValueColumn("testStrength", Metric.TEST_STRENGTH, Messages.Column_TestStrength(),
Messages.Column_DeltaTestStrength("Δ"), columns);
+ /* TRACE32 metrics */
+ configureValueColumn("statementCoverage", Metric.STATEMENT, Metric.STATEMENT.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("stmtDcCoverage", Metric.STMT_DC, Metric.STMT_DC.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("stmtCcCoverage", Metric.STMT_CC, Metric.STMT_CC.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("conditionCoverage", Metric.CONDITION, Metric.CONDITION.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("decisionCoverage", Metric.DECISION, Metric.DECISION.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("functionCoverage", Metric.FUNCTION, Metric.FUNCTION.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("objectCodeCoverage", Metric.OBJECT_CODE, Metric.OBJECT_CODE.getDisplayName(), SKIP_DELTA, columns);
+ configureValueColumn("bytesCoverage", Metric.BYTES, Metric.BYTES.getDisplayName(), SKIP_DELTA, columns);
+
var entries = new EnumMap<>(Map.of(
Metric.LOC, 200,
Metric.TESTS, 500,
@@ -267,6 +277,38 @@ public DetailedCell> getTestStrength() {
return createColoredCoverageColumn(getCoverageOfNode(Metric.TEST_STRENGTH));
}
+ public DetailedCell> getStatementCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.STATEMENT));
+ }
+
+ public DetailedCell> getStmtDcCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.STMT_DC));
+ }
+
+ public DetailedCell> getStmtCcCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.STMT_CC));
+ }
+
+ public DetailedCell> getConditionCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.CONDITION));
+ }
+
+ public DetailedCell> getDecisionCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.DECISION));
+ }
+
+ public DetailedCell> getFunctionCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.FUNCTION));
+ }
+
+ public DetailedCell> getObjectCodeCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.OBJECT_CODE));
+ }
+
+ public DetailedCell> getBytesCoverage() {
+ return createColoredCoverageColumn(getCoverageOfNode(Metric.BYTES));
+ }
+
Coverage getCoverageOfNode(final Metric metric) {
return file.getTypedValue(metric, Coverage.nullObject(metric));
}
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java
index 72385d598..47d01dc88 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageTool.java
@@ -250,7 +250,10 @@ public enum Parser {
"symbol-footsteps-outline plugin-ionicons-api"),
XUNIT(Messages._Parser_Xunit(), ParserType.TEST,
"**/xunit.xml,**/TestResult.xml",
- "symbol-solid/list-check plugin-font-awesome-api");
+ "symbol-solid/list-check plugin-font-awesome-api"),
+ TRACE32(Messages._Parser_TRACE32(), ParserType.COVERAGE,
+ "**/index.xml",
+ "symbol-footsteps-outline plugin-ionicons-api");
private final Localizable displayName;
private final ParserType parserType;
diff --git a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageViewModel.java b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageViewModel.java
index 04025e620..ba4302cb1 100644
--- a/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageViewModel.java
+++ b/plugin/src/main/java/io/jenkins/plugins/coverage/metrics/steps/CoverageViewModel.java
@@ -81,7 +81,8 @@ public class CoverageViewModel extends DefaultAsyncTableContentProvider implemen
private static final ElementFormatter FORMATTER = new ElementFormatter();
private static final Set TREE_METRICS = Set.of(
Metric.LINE, Metric.BRANCH, Metric.MUTATION, Metric.TEST_STRENGTH, Metric.CYCLOMATIC_COMPLEXITY, Metric.TESTS,
- Metric.MCDC_PAIR, Metric.FUNCTION_CALL, Metric.COGNITIVE_COMPLEXITY, Metric.NCSS, Metric.NPATH_COMPLEXITY);
+ Metric.MCDC_PAIR, Metric.FUNCTION_CALL, Metric.COGNITIVE_COMPLEXITY, Metric.NCSS, Metric.NPATH_COMPLEXITY,
+ Metric.STATEMENT, Metric.STMT_DC, Metric.STMT_CC, Metric.CONDITION, Metric.DECISION, Metric.FUNCTION, Metric.OBJECT_CODE, Metric.BYTES);
private final Run, ?> owner;
private final String displayName;
private final CoverageStatistics statistics;
diff --git a/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/model/Messages.properties b/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/model/Messages.properties
index b718e51e0..c67904542 100644
--- a/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/model/Messages.properties
+++ b/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/model/Messages.properties
@@ -19,6 +19,14 @@ Metric.FUNCTION_CALL=Function Call Coverage
Metric.NCSS=NCSS
Metric.COGNITIVE_COMPLEXITY=Cognitive Complexity
Metric.NPATH=NPath Complexity
+Metric.STATEMENT=Statement Coverage
+Metric.STMT_DC=Statement + Decision Coverage
+Metric.STMT_CC=Statement + Condition Coverage
+Metric.CONDITION=Condition Coverage
+Metric.DECISION=Decision Coverage
+Metric.FUNCTION=Function Coverage
+Metric.OBJECT_CODE=Object Code Coverage
+Metric.BYTES=Bytes Coverage
Metric.Short.CONTAINER=Container
Metric.Short.MODULE=Module
@@ -41,6 +49,14 @@ Metric.Short.FUNCTION_CALL=Function Call
Metric.Short.NCSS=NCSS
Metric.Short.COGNITIVE_COMPLEXITY=Cognitive Complexity
Metric.Short.NPATH=NPath Complexity
+Metric.Short.STATEMENT=Statement
+Metric.Short.STMT_DC=Statement + DC
+Metric.Short.STMT_CC=Statement + CC
+Metric.Short.CONDITION=Condition
+Metric.Short.DECISION=Decision
+Metric.Short.FUNCTION=Function
+Metric.Short.OBJECT_CODE=Object Code
+Metric.Short.BYTES=Bytes
Metric.MUTATION.Killed=Killed
Metric.MUTATION.Survived=Survived
diff --git a/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/steps/Messages.properties b/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/steps/Messages.properties
index 9c8f6773a..f8381f777 100644
--- a/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/steps/Messages.properties
+++ b/plugin/src/main/resources/io/jenkins/plugins/coverage/metrics/steps/Messages.properties
@@ -12,6 +12,7 @@ Parser.OpenCover=OpenCover Coverage Reports
Parser.PIT=PIT Mutation Testing Reports
Parser.VectorCAST=VectorCAST Coverage Results
Parser.Xunit=XUnit Test Results
+Parser.TRACE32=TRACE32 Coverage Reports
Coverage.Not.Available=N/A
Coverage.Link.Name=Coverage Report