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

Classify included headers without executable code as declaration-only, not no-data

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

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
cpp, python
领域
testing-qa

调研方向

Start with select_files in reporter.py and its declaration-only naming rule, then check how the scope aspect records compiled objects. Run the reporter on a workspace with Watchdog.hpp (included by WatchdogImpl_UT.cpp, no companion source) and read the unmapped_files.txt output. Done when that header is reported as declaration-only, no-data keeps only files no unit compiled or included, unit tests cover both cases, and the manual's unmapped-files section describes the rule.

由索引模型根据 Issue 内容生成。

描述

Observation

unmapped_files.txt lists score/launch_manager/src/daemon/src/watchdog/details/Watchdog.hpp (lifecycle) as no-data, although WatchdogImpl_UT.cpp includes it and its tests run. The header holds only constexpr constants and includes, no function, so clang emits no coverage region for it and llvm-cov cannot list it. There is nothing to measure; the file belongs in the harmless declaration-only category.

Not a bug in the measurement: no coverage is lost. The category is wrong.

Why

select_files in reporter.py recognises declaration-only by a naming rule: a header without data whose same-stem source has data (foo.h next to a compiled foo.cpp). A header with no companion source, such as a constants-only or interface-only header, cannot be told apart from a header nothing includes, because a header without functions leaves no trace in the objects. It falls into no-data, the category that is meant to flag real gaps.

Proposal

Use the compiler's own knowledge of which headers were included:

  • With -MD/.d dependency files (Bazel's .d outputs of CppCompile actions) or the showIncludes-style data, the scope aspect can record the set of headers each translation unit included.
  • The reporter then classifies an unmapped header that appears in any compiled unit's include set as declaration-only (included, nothing executable), and leaves no-data for headers no unit included.

Alternative, cheaper but weaker: scan the header text for function definitions ({ bodies outside class/namespace declarations) and classify headers without any as declaration-only. Heuristic and fragile with templates and macros; the dependency-file route is exact.

Acceptance

  • Watchdog.hpp-style headers (included, no functions, no same-stem source) are reported as declaration-only.
  • no-data keeps only files no translation unit in the run compiled or included.
  • Unit test for both cases; end-to-end workspace gets one constants-only header without a companion source.
  • Manual's unmapped-files section describes the rule.
主要语言
Python
星标
0
派生
3
平均合并
18 小时 24 分钟
30 天内合并 PR
16

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

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

eclipse-score/coverage_tool 的其他 Issue

查看 eclipse-score/coverage_tool 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

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