Update dependency score_coverage to v0.3.1 - #716
Merged
Merged
Conversation
eclipse-score-bot
requested a review
from NicolasFussberger
as a code owner
September 29, 2026 12:11
eclipse-score-bot
requested review from
FScholPer,
MaciejKaszynski,
anmittag,
antonkri,
pawelrutkaq and
ramceb
as code owners
September 29, 2026 12:11
Contributor
|
Documentation preview for this pull request is available at: |
eclipse-score-bot
force-pushed
the
renovate/score_coverage-0.x
branch
from
September 29, 2026 14:08
6d1b102 to
e30816a
Compare
NicolasFussberger
approved these changes
Sep 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.2.0→0.3.1Release Notes
eclipse-score/coverage_tool (score_coverage)
v0.3.1What's Changed
Full Changelog: eclipse-score/coverage_tool@v0.3.0...v0.3.1
In plain words
Libraries tested from a
testsubpackage are measured on QNX. The firstQNX report of baselibs showed
score/osat 13 % where Linux showed 80 %. Thetests had run; their counters were thrown away on the way back. Bazel decides
which packages take part in a coverage run by guessing from where the tests
are, and it does not look one directory up from a
testsubpackage. On Linuxour own merger ignores that guess; on QNX Bazel's own collector obeys it. The
fix is one line in the coverage config,
--instrumentation_filter=^//score[/:],now required by the user manual for both backends. The reporters warn when a
report shows the pattern (files without data in a directory that is tested
from
test/ortests/), and the integration workspace contains such alibrary so the case stays covered.
Details for integrators
--instrumentation_filter=^//<root package>[/:]to thecoverage:llvm_covand QNX configs (user manual, steps 4 and 4b). Withoutit a library without an instrumented direct dependency is compiled without
counters on both backends, and on the gcov backend every library outside
the guessed filter loses its counters.
tool_req__coverage_instrumentation_hint,potential error ERR-13);
known_problemsand the architecture's designdecisions corrected: the filter is not irrelevant, it must name the module.
//lib:cross_pkgtested from//lib/test, in bothgoldens; a gcov run with the guessed filter checks the warning.
are measured on the gcov backend once the vendoring target is inside
the instrumentation filter. The 0.3.0 statement described the guessed
filter, which left the vendoring target uninstrumented. The gcov golden of
the integration workspace now contains the vendored header.
Upgrading
bazel_dep(name = "score_coverage", version = "0.3.1"), then add theinstrumentation filter line to every coverage config. Reference changes:
baselibs #626 and communication #1171 (QNX configs), logging #338 and
lifecycle #715 (LLVM config).
v0.3.0: QNX target supportIn plain words
Coverage of tests that run on QNX. Until now the tool measured only what
runs on the Linux host. QNX's compiler (QCC) is GCC-based and produces gcov
counters instead of LLVM's coverage mapping, and the tests run inside a QEMU
virtual machine. This release adds a second backend: the QNX runner of
score_qnx_unit_testsbrings the counters back, Bazel's own collector turnsthem into per-test data, and the new gcov reporter produces the same report
as on Linux: the same HTML archive, the same LCOV file, the same job summary,
the same justifications and gate. A module declares one more reporter target
(
backend = "gcov") and one bazelrc block; see the user manual, step 4b.What the QNX report does not contain: Rust sources (rustc cannot produce gcov
counters; they are listed as not instrumentable and measured by the Linux
run) and headers a module vendors from an external repository (Bazel's
collector drops them; also measured by the Linux run). gcov counts lines
differently from LLVM (no unused inline functions, no closing braces), so the
two reports are compared per file, not merged.
Validated with the S-CORE GCC toolchain on Linux, which takes exactly the same
collection path as QCC on QNX, against a hand-derived ground truth, and on
real QNX targets in the baselibs CI (615 files, 81.6 % raw line coverage).
The QNX transport itself is the one
communicationhas used since 2026.Details for integrators
score_coverage/gcov_reporter.py(//:gcov_reporter): sums per-testLCOV records, applies the scope, adds a zero-coverage baseline from the
.gcnonotes of in-scope translation units, renders HTML and summary withgcovr 8.6 (new pip dependency), writes
unmapped_files.txtwith the newnot-instrumentedcategory.score_coverage_reportergainedbackendandgcov;llvm_cov/llvm_profdataare required only for the LLVM backend. Existing consumerBUILD files need no change.
score_coverage_scopewrites<name>_gcno.txtand exports thegcno/gcno_filesoutput groups.tags = ["manual"]sobazel build //...on a Linux host does not fetch the QNX SDP.
coverage:gcovconfig with the S-CORE GCCtags = ["manual"]sobazel build //...on a Linux host does not fetch the QNX SDP.
coverage:gcovconfig with the S-CORE GCCtoolchain,
expected_lcov_gcov.datground truth, gcov checks in theend-to-end script.
tool_req__coverage_scope_gcno,tool_req__coverage_backend_select,tool_req__coverage_gcov_merge,tool_req__coverage_gcov_baseline,tool_req__coverage_gcov_html;potential errors ERR-11 and ERR-12; constraint CSTR-11.
Fixes
in
effective_coverage.pyis bounded to one table row (it could previouslyread the status of the next line).
test targets import the same module.
_virtual_includespath) before selecting the in-scope files, so a headerexercised by several tests keeps every test's counts.
Upgrading
bazel_dep(name = "score_coverage", version = "0.3.0"). No change needed forLinux-only modules. For QNX, follow user manual step 4b (reporter target,
bazelrc block, CI job); baselibs PR #626 and communication PR #1171 are the
reference integrations.
Two things to settle before publishing. The docs still say "0.3.0 (unreleased)" and the date needs setting when you tag. The baselibs QNX numbers in the validation sentence come from the green baselibs job on PR #626, so drop that sentence if you would rather not cite a draft PR.
What's Changed
Full Changelog: eclipse-score/coverage_tool@v0.2.0...v0.3.0
This PR was generated by #infrastructure automation. Contact us if you have any questions or feedback.