From 23bbaed54fd8bafa3a0da6ae56281851bffd5599 Mon Sep 17 00:00:00 2001 From: Iris Blackburn Date: Mon, 21 Jul 2025 14:22:51 +1200 Subject: [PATCH 1/5] Add report visualization references. Adding descriptions of the report visualization similar to the cobertura documentation. https://docs.gitlab.com/ci/testing/code_coverage/cobertura/ https://gitlab.com/gitlab-org/gitlab/-/issues/479804#note_2634805493 https://gitlab.zendesk.com/agent/tickets/640796 --- doc/ci/testing/code_coverage/jacoco.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/ci/testing/code_coverage/jacoco.md b/doc/ci/testing/code_coverage/jacoco.md index c50267bbf84181..180a0a0c3f35c3 100644 --- a/doc/ci/testing/code_coverage/jacoco.md +++ b/doc/ci/testing/code_coverage/jacoco.md @@ -29,6 +29,12 @@ The JaCoCo coverage reports visualization supports: - [Instructions (C0 Coverage)](https://www.eclemma.org/jacoco/trunk/doc/counters.html), `ci` (covered instructions) in reports. +Coverage displays in the diff view as follows: + +- `Instructions covered` (green): reported lines with at least one covered instruction (ci > 0). +- `No instructions covered` (red): reported lines without any covered instructions (ci = 0). +- no coverage information: lines which are not listed in the report. + ## Add JaCoCo coverage job To configure your pipeline to generate the coverage reports, add a job to your -- GitLab From aa5f685723892c8544e245dfb0dd6cf0f43175a6 Mon Sep 17 00:00:00 2001 From: Iris Blackburn Date: Mon, 21 Jul 2025 14:47:49 +1200 Subject: [PATCH 2/5] Add example with image --- .../img/jacoco_coverage_example.png | Bin 0 -> 49922 bytes doc/ci/testing/code_coverage/jacoco.md | 20 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 doc/ci/testing/code_coverage/img/jacoco_coverage_example.png diff --git a/doc/ci/testing/code_coverage/img/jacoco_coverage_example.png b/doc/ci/testing/code_coverage/img/jacoco_coverage_example.png new file mode 100644 index 0000000000000000000000000000000000000000..d2dea0767f3deaff81074a8e0687a26700e3503e GIT binary patch literal 49922 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 literal 0 HcmV?d00001 diff --git a/doc/ci/testing/code_coverage/jacoco.md b/doc/ci/testing/code_coverage/jacoco.md index 180a0a0c3f35c3..c0f23d2bc9219f 100644 --- a/doc/ci/testing/code_coverage/jacoco.md +++ b/doc/ci/testing/code_coverage/jacoco.md @@ -31,9 +31,23 @@ The JaCoCo coverage reports visualization supports: Coverage displays in the diff view as follows: -- `Instructions covered` (green): reported lines with at least one covered instruction (ci > 0). -- `No instructions covered` (red): reported lines without any covered instructions (ci = 0). -- no coverage information: lines which are not listed in the report. +- `Instructions covered` (green): reported lines with at least one covered instruction (ci > 0). +- `No instructions covered` (red): reported lines without any covered instructions (ci = 0). +- No coverage information: lines which are not listed in the report. + +For example, with report output: + +``` + + + + + +``` + +The merge request diff view would look like: + +![Jacoco coverage report showing uncovered code (red bars) on lines 83-86, covered code (green bar) on line 88, and lines 87, 89-90 without coverage data](jacoco_coverage_example.png) ## Add JaCoCo coverage job -- GitLab From b6d0390fa14bacccc30ed966aba2724a35d841f3 Mon Sep 17 00:00:00 2001 From: Iris Blackburn Date: Mon, 21 Jul 2025 14:49:23 +1200 Subject: [PATCH 3/5] fix image path --- doc/ci/testing/code_coverage/jacoco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ci/testing/code_coverage/jacoco.md b/doc/ci/testing/code_coverage/jacoco.md index c0f23d2bc9219f..b84592414ed39c 100644 --- a/doc/ci/testing/code_coverage/jacoco.md +++ b/doc/ci/testing/code_coverage/jacoco.md @@ -47,7 +47,7 @@ For example, with report output: The merge request diff view would look like: -![Jacoco coverage report showing uncovered code (red bars) on lines 83-86, covered code (green bar) on line 88, and lines 87, 89-90 without coverage data](jacoco_coverage_example.png) +![Jacoco coverage report showing uncovered code (red bars) on lines 83-86, covered code (green bar) on line 88, and lines 87, 89-90 without coverage data](img/jacoco_coverage_example.png) ## Add JaCoCo coverage job -- GitLab From a0fa8a3062cd10acf055d47e58def44c424c1af1 Mon Sep 17 00:00:00 2001 From: Iris Blackburn Date: Mon, 21 Jul 2025 15:06:50 +1200 Subject: [PATCH 4/5] Add codeblock language --- doc/ci/testing/code_coverage/jacoco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ci/testing/code_coverage/jacoco.md b/doc/ci/testing/code_coverage/jacoco.md index b84592414ed39c..0dee6c25d82477 100644 --- a/doc/ci/testing/code_coverage/jacoco.md +++ b/doc/ci/testing/code_coverage/jacoco.md @@ -37,7 +37,7 @@ Coverage displays in the diff view as follows: For example, with report output: -``` +```xml -- GitLab From 80dd153085ada3608d8e35429eed89fc6e9436ab Mon Sep 17 00:00:00 2001 From: Iris Blackburn Date: Mon, 21 Jul 2025 15:21:18 +1200 Subject: [PATCH 5/5] update image version --- ...xample.png => jacoco_coverage_example_v18_3.png} | Bin doc/ci/testing/code_coverage/jacoco.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename doc/ci/testing/code_coverage/img/{jacoco_coverage_example.png => jacoco_coverage_example_v18_3.png} (100%) diff --git a/doc/ci/testing/code_coverage/img/jacoco_coverage_example.png b/doc/ci/testing/code_coverage/img/jacoco_coverage_example_v18_3.png similarity index 100% rename from doc/ci/testing/code_coverage/img/jacoco_coverage_example.png rename to doc/ci/testing/code_coverage/img/jacoco_coverage_example_v18_3.png diff --git a/doc/ci/testing/code_coverage/jacoco.md b/doc/ci/testing/code_coverage/jacoco.md index 0dee6c25d82477..cac8624d4c2aa2 100644 --- a/doc/ci/testing/code_coverage/jacoco.md +++ b/doc/ci/testing/code_coverage/jacoco.md @@ -47,7 +47,7 @@ For example, with report output: The merge request diff view would look like: -![Jacoco coverage report showing uncovered code (red bars) on lines 83-86, covered code (green bar) on line 88, and lines 87, 89-90 without coverage data](img/jacoco_coverage_example.png) +![Jacoco coverage report showing uncovered code (red bars) on lines 83-86, covered code (green bar) on line 88, and lines 87, 89-90 without coverage data](img/jacoco_coverage_example_v18_3.png) ## Add JaCoCo coverage job -- GitLab