coverage: on-target (QNX) coverage support in the shared coverage module
I maintainer di solito rispondono entro 1 giorno
@dcalavrezo-qorix ci sta già lavorando.
Dal 17/8/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Context
PR #394 centralizes the Linux/LLVM coverage pipeline (unified C++ + Rust, exact 0% baselines, justification gating) into @score_tooling//coverage. On-target (QNX) coverage was deliberately left out of that PR and is tracked here instead.
Current state across S-CORE (as of 2026-08-17):
- No repository enforces QNX coverage in CI. QNX tests run everywhere (QNX images built by the IFS toolchain, executed under qemu-system on the runners), but coverage is measured on Linux only.
communicationis the only repo with a QNX coverage capability at all: manualbazel coverage --config=qnx— C++ only, gcov-based (QCC/GCC →.gcda→ Bazel default LCOV pipeline →lcov_to_html.py/gcovr rendering). It already reuses three shared components (thecoverage_scopeallowlist,justify.py --platform qnx, andeffective_coverage.py, which auto-detects gcovr vs llvm-cov HTML). Untested-file baselines exist there via hand-maintainedbaseline_coverage_testhelper targets.- Rust coverage on QNX exists nowhere: rustc is an LLVM compiler and cannot emit gcov data, so it can never ride the gcov path; and until
ferrocene_toolchain_builder1.3.1 the LLVM profile runtime did not work on QNX at all (missing profile bitmap symbols;madvise(MADV_DONTNEED)crash — both fixed by the 1.3.1 compiler-rt patches). It has never been validated end-to-end.
Goal
Make on-target coverage a first-class, CI-enforceable capability of the shared module, available to all modules (persistency and lifecycle already run QNX tests under QEMU — only the collection/reporting flow is missing).
Track 1 — C++ via gcov (available today)
Move the gcov flow from communication into @score_tooling//coverage as an optional path:
-
lcov_to_html.py(LCOV → gcovr JSON v0.14 → gcovr HTML; adds agcovrpip dependency) - the
coverage:qnx_x86_64bazelrc block (QCC toolchain, Bazel default lcov_merger/report generator, LLVM options reset) - the baseline-collection logic from
generate_coverage_html.sh(merging Bazel'sbaseline_coverage.dat+baseline_coverage_test_cc_coverage.datrecords) and documentation of the helper-target pattern - a QNX case in the integration test workspace, then a consumer (e.g. communication) migrating its QNX flow to the shared module
Track 2 — Rust (and eventually C++) via the LLVM pipeline
- End-to-end validation: a Rust QNX test built with
-Cinstrument-coverage(builder >= 1.3.1 toolchain), executed under QEMU,.profrawcopied back through the same channel that today carries.gcda, processed by the host llvm-cov pipeline. The transport is proven for gcov; only the profraw leg is unverified. - If validated: stop resetting the Rust instrumentation flags in the QNX coverage config and report Rust-on-QNX through the standard pipeline (exact baselines, branch coverage, justification gate).
- C++ on QNX via covmap remains blocked until an LLVM-based QNX C++ toolchain exists in S-CORE (QCC is GCC-based); revisit if/when one appears.
Non-goals
- Real-hardware (HIL) collection — same model (copy counter files back, process on host) but out of scope until QEMU-based collection is established.
Refs: #394 and its review discussion on lcov_to_html.py scope.
- Lingua principale
- Rust
- Stelle
- 8
- Fork
- 38
- Merge medio
- 1g 2h
- PR unite (30g)
- 33
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di eclipse-score/tooling
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
eclipse-score/tooling#499 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
eclipse-score/tooling#458 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
eclipse-score/tooling#452 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
coverage: integration mode — scope external module roots (reference_integration)Forse di nuovo libera @dcalavrezo-qorix l’ha presa 50 giorni fa e non c’è nessuna pull request aperta. Aperta
eclipse-score/tooling#445 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Migration path rst to trlcForse di nuovo libera @antonkri l’ha presa 53 giorni fa e non c’è nessuna pull request aperta. Aperta
eclipse-score/tooling#441 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di eclipse-score/tooling
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
needs: triage type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
area:docs documentation P3
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
Raaif-Yousuf/Wingman#837 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 1 giorno
-
priority: medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
storytold/photocraft#6759 ·
I maintainer di solito rispondono entro 1 giorno