Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

coverage: on-target (QNX) coverage support in the shared coverage module

未关闭
#427 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 1 天内回复

@dcalavrezo-qorix 已经在做这个了。

开始于 2026年8月17日。

评估

这个 Issue 还没有评估数据。

描述

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.
  • communication is the only repo with a QNX coverage capability at all: manual bazel 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 (the coverage_scope allowlist, justify.py --platform qnx, and effective_coverage.py, which auto-detects gcovr vs llvm-cov HTML). Untested-file baselines exist there via hand-maintained baseline_coverage_test helper 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_builder 1.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 a gcovr pip dependency)
  • the coverage:qnx_x86_64 bazelrc block (QCC toolchain, Bazel default lcov_merger/report generator, LLVM options reset)
  • the baseline-collection logic from generate_coverage_html.sh (merging Bazel's baseline_coverage.dat + baseline_coverage_test _cc_coverage.dat records) 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, .profraw copied 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.

主要语言
Rust
星标
9
派生
39
平均合并
1 天 22 小时
30 天内合并 PR
38

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 没有贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

eclipse-score/tooling 的其他 Issue

查看 eclipse-score/tooling 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。