Summary
为OpenHarmony C/C++提供基于UT用例的代码覆盖率报告生成,支持全量和增量覆盖率分析,需要通过 hdc 连接测试设备。Use when: (1) 用户请求为子系统/部件/模块/测试套/测试用例生成全量代码覆盖率,如果提供报告路径时,解析为--output路径; (2)…
openharmonyinsight/openharmony-skills
为OpenHarmony C/C++提供基于UT用例的代码覆盖率报告生成,支持?
npx skills add openharmonyinsight/openharmony-skills --skill ohos-ut-test-coverage-report-generation
为OpenHarmony C/C++提供基于UT用例的代码覆盖率报告生成,支持全量和增量覆盖率分析,需要通过 hdc 连接测试设备。Use when: (1) 用户请求为子系统/部件/模块/测试套/测试用例生成全量代码覆盖率,如果提供报告路径时,解析为--output路径; (2)…
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
11.9K installsPre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure…
1.5K installsConfigure Azure API Management as an AI Gateway for AI models, MCP tools, and agents. WHEN: sem…
1.5K installsAzure VM/VMSS router. WHEN: create / provision / deploy / spin-up VM, recommend VM size, compar…
1.5K installsPostgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill …
1.4K installsCreate new skills, modify and improve existing skills, and measure skill performance. Use when …
927 installsOther skills from openharmonyinsight/openharmony-skills · top by installs.
npx skills add openharmonyinsight/openharmony-skills
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Files included with this skill beyond the listing page.
SKILL.md
14,268 B
SUMMARY.md
630 B
references/quick-start.md - 环境配置、设备连接、执行示例references/performance-guide.md - 预期耗时、资源占用、优化建议references/usage-examples.md - 全量/增量场景、参数匹配规则references/parameter-guide.md - 参数解析规则、验证规则、匹配规则详解references/best-practices.md - 场景选择、优化建议、安全建议references/troubleshooting.md - 常见问题排查步骤、错误恢复策略必须配置: {SKILLDIR}/config/user-config.json(必须包含 coderoot 字段)
执行示例:
📖 详见
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个关键问题:
- [ ] 是全量(subsystem/part/module 支持)还是增量(仅支持 part)? - [ ] 如果是增量,确认没有传入 subsystem(会报错 INCREMENTALNOTSUPPORT_SUBSYSTEM)
- [ ] 全量:subsystem、part、module 至少提供一个 - [ ] 增量:part 必须提供(不能为空)
- [ ] 磁盘空间充足?(全量需50GB+,增量需20GB+,详见 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] 返回错误信息
{SKILLDIR}/config/user-config.json 的 code_root 字段获取📖 详细的参数解析规则、验证规则和匹配规则请见: → references/parameter-guide.md - 完整的参数指南
{CODEROOT}/coverageresult)、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:
skilldir: {SKILLDIR}coderoot: {CODEROOT}outputpath: {outputpath}taskType: 任务类型config.deviceInfo: 设备配置信息(完整)传递给 04-full-coverage-executor.md (全量模式):
skilldir: {SKILLDIR}coderoot: {CODEROOT}taskType: 任务类型userInput.parameters: 用户解析的参数对象config.deviceInfo: 设备配置信息(完整)传递给 05-incremental-coverage-executor.md (增量模式):
skilldir: {SKILLDIR}coderoot: {CODEROOT}taskType: 任务类型userInput.parameters: 用户解析的参数对象config.deviceInfo: 设备配置信息(完整)传递给 03-dependency-installer.md:
skilldir: {SKILLDIR}coderoot: {CODEROOT}outputpath: {outputpath}taskType: 任务类型tools: 工具依赖状态pythonPackages: Python包依赖状态permissions: 权限状态传递给 04/05 执行模块:
isAllInstalled: 所有依赖是否已安装dependencies: 依赖安装状态调用 references 下的模块时遵循以下规范:
- 步骤 [2] 调用 - 输入:解析后的用户参数 - 输出:完整配置信息 + 设备信息 - 传递给:02、04、05
- 步骤 [3] 调用 - 输入:skill相关路径 + 设备信息 - 输出:环境检查状态 - 传递给:03
- 步骤 [4] 调用 - 输入:02的检查结果 - 输出:依赖安装状态 - 传递给:04/05
- 步骤 [5] 调用(全量模式) - 输入:01的完整配置 - 输出:覆盖率报告
- 步骤 [5] 调用(增量模式) - 输入:01的完整配置 - 输出:覆盖率报告
- 任何错误时调用 - 输入:错误信息 - 输出:用户友好的错误信息