skills/ohos-ut-test-coverage-report-generation/SKILL.md
为OpenHarmony C/C++提供基于UT用例的代码覆盖率报告生成,支持全量和增量覆盖率分析,需要通过 hdc 连接测试设备。Use when: (1) 用户请求为子系统/部件/模块/测试套/测试用例生成全量代码覆盖率,如果提供报告路径时,解析为--output路径; (2) 用户请求为部件/模块/测试套/测试用例生成增量代码覆盖率,需要 git diff 文件,如果提供报告路径时,解析为--output路径;注意:增量覆盖率不支持子系统级别。当需要连接 OpenHarmony 设备执行测试时激活。
npx skillsauth add openharmonyinsight/openharmony-skills ohos-ut-test-coverage-report-generationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
references/quick-start.md - 环境配置、设备连接、执行示例references/performance-guide.md - 预期耗时、资源占用、优化建议references/usage-examples.md - 全量/增量场景、参数匹配规则references/parameter-guide.md - 参数解析规则、验证规则、匹配规则详解references/best-practices.md - 场景选择、优化建议、安全建议references/troubleshooting.md - 常见问题排查步骤、错误恢复策略必须配置: {SKILL_DIR}/config/user-config.json(必须包含 code_root 字段)
执行示例:
📖 详见
references/quick-start.md(环境配置、设备连接)
NEVER 做以下操作,否则会导致测试无法编译、运行:
| 禁止项 | 原因 | 正确做法 |
|--------------------------------------------|---------------------------------------------------|------------------------------------------------|
| NEVER 修改源码 | 我们只负责编译和执运行生成报告,不涉及修改源码与用例内容 | 所有c/c++代码、skill内容禁止修改 |
| NEVER 跳出预设流程 | 预设流程以外的操作禁止,防止使用错误的命令和覆盖率工具 | 按照执行流程并只能加载当前流程涉及的md和错误处理流程md |
| NEVER 在命令执行过程中检查状态 | 同步阻塞命令必须等待完成 | 禁止在命令执行时检查日志、进程等,必须等待命令自然返回或超时 |
| NEVER 中断或轮询长时间运行的命令 | 必须使用timeout并等待自然完成 | 禁止主动中断或轮询检查命令状态,让timeout机制处理超时 |
| NEVER 在编译中断后直接重试 | 必须先清理编译缓存 | 执行 rm -rf out/ 后再重试 |
| NEVER 在多部件并行时使用相同输出目录 | 会导致报告冲突 | 每个部件使用独立的输出目录 |
| NEVER 修改 lcov 分支覆盖率参数后不重新编译 | gcno 文件会不匹配 | 修改参数后必须重新编译 |
在开始执行前,先问自己:
✅ 必须确认的3个关键问题:
目标范围正确性
INCREMENTAL_NOT_SUPPORT_SUBSYSTEM)输入完整性
资源可用性
references/performance-guide.md)hdc list targets 可验证)| 场景 | 推荐类型 | 预期耗时 | 资源需求 | 详见 | |------|---------|---------|---------|------| | PR 合并前验证 | 增量 | 30分-2小时 | 20GB 磁盘 | references/best-practices.md | | 每周质量检查 | 全量 | 3-5小时 | 50GB 磁盘 | references/performance-guide.md | | 重构后验证 | 全量 | 3-5小时 | 50GB 磁盘 | references/best-practices.md | | 日常开发调试 | 增量 | 30分-2小时 | 20GB 磁盘 | references/best-practices.md |
用户输入
↓
[1] 主入口 (SKILL.md)
- 解析关键词和参数
- 确认覆盖率类型 (全量/增量)
↓
[2] 配置检查 ⚠️ **MANDATORY - READ ENTIRE FILE**
在进入此步骤前,你必须完整读取 `references/01-config-checker.md`
的所有内容(约414行),不要设置任何行数限制。
**DO NOT Load**: 在完成此步骤前,不要加载后续参考文档。
执行内容:
├──[1] 获取基础变量 (SKILL_DIR、CODE_ROOT)
├──[2] 检查项目结构 (developer_test、xdevice、pr_local_coverage)
├──[3] 检查用户输入参数 (全量/增量覆盖率参数)
├──[4] 检查配置文件 (user-config.json内容、/etc/lcovrc)
├──[5] 解析部件名称 (subsystem/part)
├──[6] 检查设备连接配置
└──[7] 返回配置和参数信息
↓
[3] 环境检查 ⚠️ **MANDATORY - READ ENTIRE FILE**
完成配置检查后,读取 `references/02-env-checker.md` 的所有内容(约150行)。
**DO NOT Load**: 在完成此步骤前,不要加载 03-dependency-installer.md。
执行内容:
├──[1] 操作系统检测 (仅支持Linux)
├──[2] 检查Python 版本 (需要3.8+)
├──[3] 检查工具依赖
├──[4] 检查Python依赖包
├──[5] 检查是否存在可执行编译命令的全仓根目录 (build_system.sh)
├──[6] 权限检查
├──[7] 磁盘空间检查
└──[8] 返回环境状态,如果出现错误进入错误处理流程
↓
[4] 依赖安装 ⚠️ **MANDATORY - READ ENTIRE FILE**
完成环境检查后,读取 `references/03-dependency-installer.md` 的所有内容(约100行)。
**DO NOT Load**: 在完成此步骤前,不要加载执行模块。
执行内容:
├──[1] 安装系统依赖 (仅支持Linux)
├──[2] 安装Python包依赖 (需要3.8+)
├──[3] 验证安装结果
├──[4] 返回依赖安装状态,如果出现错误进入错误处理流程
↓
[5] 覆盖率执行流程
├── 全量:⚠️ **MANDATORY - READ ENTIRE FILE**
当 `taskType = "full_coverage"` 时,读取 `references/04-full-coverage-executor.md`
的所有内容(约472行)。**DO NOT Load**: 增量模式下不要加载此文档。
│ ├── [1] 修改developer_test中的 user_config.xml 配置文件
│ ├── [2] 执行 build_before_generate.py (如果用户已经编译完成则跳过)
│ ├── [3] 编译用例 (检查skip_compile、预编译、构建命令、执行、验证)
│ ├── [4] 启动框架并执行命令 (构建命令、拼接命令、执行、验证)
│ ├── [5] 执行 after_lcov_branch.py (恢复源码)
│ ├── [6] 移动报告到输出目录
│ ├── [7] 解析报告
│ └── [8] 清理环境
└── 增量: ⚠️ **MANDATORY - READ ENTIRE FILE**
当 `taskType = "incremental_coverage"` 时,读取 `references/05-incremental-coverage-executor.md`
的所有内容。**DO NOT Load**: 全量模式下不要加载此文档。
├── [1] 执行本地编译脚本 (script/pr_local_coverage/local_build)
├── [2] 执行覆盖率流程脚本 (script/pr_local_coverage/pr_coverage)
├── [3] 移动报告到输出结果目录
├── [4] 恢复环境
└── [5] 清理临时文件
↓
[6] 错误处理 ❌ **DO NOT LOAD(仅在错误时触发)**
在任何步骤出现错误时,读取 `references/06-error-handler.md` 的相关错误处理部分。
在步骤 [2]-[5] 期间,不要加载此文档。
├──[1] 识别错误类型
├──[2] 查找解决方案
├──[3] 提供用户友好的错误信息
└──[4] 返回错误信息
{SKILL_DIR}/config/user-config.json 的 code_root 字段获取📖 详细的参数解析规则、验证规则和匹配规则请见:
→ references/parameter-guide.md - 完整的参数指南
{CODE_ROOT}/coverage_result)、skip_compiler(可选,仅全量)📖 详见: references/parameter-guide.md - 参数验证规则部分
详见 references/usage-examples.md - 全量/增量场景、参数匹配规则、错误示例(第1-389行)
| 错误类型 | 恢复方法 | 是否需要清理 | 详见 |
|---------|---------|-------------|------|
| 配置错误 | 修改 user-config.json 后重试 | 否 | references/troubleshooting.md |
| 环境缺失 | 运行 pip install / apt-get | 否 | references/quick-start.md |
| 编译失败 | 清理编译缓存后重试 | 是:rm -rf out/ | references/troubleshooting.md |
| 测试超时 | 检查设备状态,重试 | 否 | references/troubleshooting.md |
| 报告生成失败 | 检查 lcov 数据完整性 | 是:重新生成 gcda | references/troubleshooting.md |
| 设备连接失败 | 检查 hdc 配置,重新连接 | 否 | references/quick-start.md |
所有模块位于 references/ 目录:
脚本位于 scripts/ 目录:
配置文件: config/user-config.json
由 01-config-checker.md 获取并传递给后续模块:
主入口
↓
[01] config-checker
├──→ [02] env-checker
├──→ [04] full-coverage-executor (全量模式)
├──→ [05] incremental-coverage-executor (增量模式)
└──→ [06] error-handler (错误时)
[02] env-checker
├──→ [03] dependency-installer
└──→ [06] error-handler (错误时)
[03] dependency-installer
└──→ [06] error-handler (错误时)
[04/05] 执行模块
└──→ [06] error-handler (错误时)
传递给 02-env-checker.md:
skill_dir: {SKILL_DIR}code_root: {CODE_ROOT}output_path: {output_path}taskType: 任务类型config.deviceInfo: 设备配置信息(完整)传递给 04-full-coverage-executor.md (全量模式):
skill_dir: {SKILL_DIR}code_root: {CODE_ROOT}taskType: 任务类型userInput.parameters: 用户解析的参数对象config.deviceInfo: 设备配置信息(完整)传递给 05-incremental-coverage-executor.md (增量模式):
skill_dir: {SKILL_DIR}code_root: {CODE_ROOT}taskType: 任务类型userInput.parameters: 用户解析的参数对象config.deviceInfo: 设备配置信息(完整)传递给 03-dependency-installer.md:
skill_dir: {SKILL_DIR}code_root: {CODE_ROOT}output_path: {output_path}taskType: 任务类型tools: 工具依赖状态pythonPackages: Python包依赖状态permissions: 权限状态传递给 04/05 执行模块:
isAllInstalled: 所有依赖是否已安装dependencies: 依赖安装状态调用 references 下的模块时遵循以下规范:
01-config-checker.md:
02-env-checker.md:
03-dependency-installer.md:
04-full-coverage-executor.md:
05-incremental-coverage-executor.md:
06-error-handler.md:
testing
--- name: ohos-req-value-decision description: Use after review meeting to record decision and route to next step. Triggers: 评审决策纪要, 评审结论回流, value decision, 评审接纳, 评审不接纳, 评审退回, 下次重新上会. Do NOT use for feature baseline (ohos-req-feature-baseline), review gate checks (ohos-req-review-gate), or IR generation (ohos-req-feature-to-ir). metadata: author: openharmony scope: common stage: requirements capability: value-decision version: 0.3.0 status: draft tags: - sdd - requirements
development
Use when converting an OpenHarmony requirement document, spec, or design proposal into an OpenHarmony review slide deck (需求评审 / 需求变更评审 / 设计评审 PPTX) — produces the fixed OpenHarmony-branded review-deck structure (OH logo on every page) with architecture/flow diagrams and field tables. Triggers on "需求评审PPT", "需求变更评审", "把需求文档转成评审PPT", "spec转评审PPT", "requirement/spec to review deck". NOT for arbitrary or generic slide decks unrelated to OpenHarmony requirement/design review.
testing
Use when performing the Phase 0 Step 0.5 Review Ready Gate on a 04-feature.md, especially when the user says "evaluate gate", "review readiness", "feature ready?", "should we generate IR", or when the ohos-req-intake-orchestration main session needs a structured Ready / Conditional Ready / Not Ready judgment instead of doing the check inline. Reads 01-04, runs seven fixed checks plus a conditional-items check, and returns a machine-readable JSON summary plus a human-readable table that the main session can route on. Do NOT use for feature baseline generation (ohos-req-feature-baseline), value decision recording (ohos-req-value-decision), or IR generation (ohos-req-feature-to-ir).
testing
--- name: ohos-req-requirement-intake description: Use when importing an OHOS requirement into Phase 0.1, especially for 01-requirement.md, requirement intake, background, user value, scenarios, scope, FR/NFR, affected modules, or priority. Triggers: 需求导入, 01-requirement, 需求基线, RR单号. Do NOT use for feasibility analysis (ohos-req-feasibility-analysis), architecture decision (ohos-req-arch-decision), or feature baseline (ohos-req-feature-baseline). metadata: author: openharmony scope: common