coverage: adopt the LLVM coverage pipeline from score_tooling 2.2.1 - #62
Open
dcalavrezo-qorix wants to merge 1 commit into
Open
dcalavrezo-qorix wants to merge 1 commit into
dcalavrezo-qorix wants to merge 1 commit into
Conversation
Replace the gcov/genhtml flow with the shared LLVM source-based pipeline from @score_tooling//coverage: line + branch coverage, exact 0% baselines for untested in-scope files, a justification mechanism and a threshold gate (report-only at introduction). The score_tooling 1.2.0-era git_override is collapsed into a plain 2.2.1 dep (2.2.1 contains the sphinx features the override existed for, and no longer uses svglib - that patch is deleted). The bump surfaced four issues, all fixed here: - bazel/toolchains: the repo-local libclang_toolchain used the removed cxx_builtin_include/extra_config_site attrs; migrated to the 2.x API (cc_toolchain attr, mirroring score_tooling's own instance). - score_persistency 0.3.2's root BUILD loads rust_coverage_report, which 2.x removed - the whole external package failed to evaluate (manifesting as 'no such target kvs_cpp'). A second override patch strips the dead load/target. - toolchains_llvm 1.6.0 -> 1.8.0 (needed for the coverage instance) changes the default 19.1.0 instance to bundled libc++, breaking plain builds under warnings-as-errors; stdlib is pinned to stdc++ to preserve the 1.6.0 behavior. - The scope's direct deps hit visibility walls (CI builds acceptlist targets as top-level, bypassing visibility; deps edges do not). Instead of granting visibility in a dozen team-owned BUILD files, the coverage config sets --check_visibility=false (coverage-only; every regular job still enforces visibility). Scope and completeness checker are anchored to deps_acceptlist.json - the public repo builds only that surface (the full //score tree references internal-overlay-only targets such as factory_socal_r20_11). Validation (local): 15/15 acceptlist tests pass, 93.68% lines (608/649), 97.66% branches (167/171), 22 files in the report, 3 at exact 0% (untested json_helper impl), gate verified at thresholds 0 and 100; format.check, copyright.check, the scope checker and the architectural_design PlantUML parse all green under 2.2.1.
License Check Results🚀 The license check job ran with the Bazel command: bazel run //:license-checkStatus: Click to expand output |
dcalavrezo-qorix
marked this pull request as ready for review
September 4, 2026 13:51
dcalavrezo-qorix
requested review from
LittleHuba,
antonkri,
castler,
michaelsaborov and
ramceb
as code owners
September 4, 2026 13:51
This branch has not been deployed
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.
What
Replaces the gcov/genhtml coverage flow with the shared LLVM source-based pipeline from
@score_tooling//coverage(adoption guide), bumping score_tooling to 2.2.1 and collapsing the oldgit_override(2.2.1 contains the sphinx features it existed for; its svglib patch is obsolete and deleted). Onebazel coverage --config=llvm_covrun over the acceptlist test targets produces line and branch coverage, exact 0% entries for untested in-scope files, a justification mechanism and a threshold gate (report-only,COVERAGE_THRESHOLD: "0").Validation (local, x86_64-linux)
json_helperimplementation — invisible to the old flow)format.check,copyright.checkand the PlantUML parse ofstatic_design.puml(architectural_designunder 2.x) all greenScope: anchored to
deps_acceptlist.jsonThe public repository builds only the acceptlist surface — the full
//scoretree references targets that exist only in the internal overlay (factory:factory_socal_r20_11via thecustom.bzlstub,@score_persistency//:kvs_cppconsumers). The coverage scope therefore lists the production libraries frombuildable_targets, and.github/tools/check_coverage_scope.sh(first workflow step, same mechanism as eclipse-score/baselibs#533) fails CI when an acceptlist library is neither in scope nor justified intools/coverage/scope_exclusions.txt— adding a library to the acceptlist forces the scope decision.Four 2.x-bump fixes bundled (each would break the build on any future renovate bump)
bazel/toolchainslibclang migrated to the 2.x APIcxx_builtin_include/extra_config_siteattrs removed;cc_toolchainnow mandatory (mirrors score_tooling's own instance)rust_coverage_report, removed in 2.x → the whole external package failed to evaluate ("no such targetkvs_cpp")stdlib = "stdc++"pinned on the default LLVM 19.1.0 instance-stdlib=libc++, an unused-argument error under warnings-as-errors in plain builds--check_visibility=falsein the coverage config onlyPre-existing failure, not this PR
The
build-docs / Build Documentationjob fails on this PR withconfig_provider_impl_test.cpp: error: no matching function for call to 'async'— the identical error (same file, same lines) fails everydocs.ymlrun onmainsince at least 2026-08-12 (runs on e0489b1, f0d4f67, c7fd075), long before this change. Locally,bazel build //:docssucceeds on this branch. Fixing that test'sstd::asyncusage under the docs job's clang compile is a separate, pre-existing issue.Notes
llvm_toolchain_coverage); regular builds keep the default 19.1.0 toolchain untouched.coverage_report.ymlkeeps its name and artifact name (*_cpp_coverage_report); lcov/genhtml steps dropped; scope check added as the first step.trlc/lobstergit_overrides (pinned to an old tooling era) are compatible with 2.2.1 — docs, PlantUML and copyright paths all build; left untouched.