skills/ohos-test-fuzz-generation/SKILL.md
为 C/C++ 项目自动生成 FUZZ 测试用例、执行安全规范审查、生成语义化种子数据(corpus)。支持 LLVM libFuzzer 框架,兼容 OpenHarmony、Linux、Android 等构建系统。 **必须激活场景**: - 用户提及 "fuzz 测试"、"生成 fuzzer"、"创建 fuzz 用例"、"fuzz 规范检查"、"fuzz_test"、"LLVMFuzzerTestOneInput" - 需要为类/API 编写 FUZZ 测试 - 需要生成或验证 FUZZ 种子数据 - 需要检查 FUZZ 代码是否符合安全编码规范 **能力**:代码分析 → 用例生成 → 种子构造 → 26条规则合规审查 → 自动修复 → 报告生成。
npx skillsauth add openharmonyinsight/openharmony-skills ohos-test-fuzz-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.
用户输入需求
↓
[决策点] 用户意图是什么?
├─ 给类名要求生成测试 → 进入完整工作流
├─ 给现有文件要求检查 → 跳至阶段 5(规范审查)
├─ 要求生成种子 → 跳至阶段 4(种子语义生成)
└─ 要求生成报告 → 跳至阶段 5 后生成报告
↓
[阶段 1] 代码分析 —— 解析目标 API 类结构、方法签名、参数类型
↓
[阶段 2] 骨架生成 —— 创建 5 文件标准化工程(.cpp/.h/BUILD.gn/project.xml/corpus)
↓
[阶段 3] 实现填充 —— 模板替换为实际 API 调用与数据构造逻辑
↓
[阶段 4] 种子语义生成 —— 基于参数类型/名称特征生成高价值初始 corpus
↓
[阶段 5] 规范审查 —— 26 条规则逐一验证,输出合规报告
**加载触发**:仅加载违规规则的 rules/SecurityCodeReview_FuzzCheck_XXX.md
**必须加载**:规则 005 详细说明(复杂参数构造,误报高发区)
**不要加载**:未违规规则
↓
[阶段 6] 自动修复 —— 可自动修复规则执行修复(最多 3 轮)
↓
交付生成文件 + 审查报告 + 人工确认项清单
异常处理决策树:
| 工具 | 用途 | 命令示例 |
|------|------|----------|
| tools/fuzz_generator.py | 生成 FUZZ 测试用例 | python tools/fuzz_generator.py -n XxxXxx_fuzzer -N Namespace -c ClassName -H header.h -p output_path |
| tools/fuzz_check.py | 规范审查(26 条规则) | python tools/fuzz_check.py --dir fuzzer_dir [--fix] |
| tools/seed_generator.py | 生成语义化种子 | python tools/seed_generator.py --dir fuzzer_dir [--api ApiName] |
| tools/generate_report.py | 生成合规报告 | python tools/generate_report.py --dir fuzzer_dir |
开始生成前,先确认:
IRemoteBroker 或方法名含 OnRemoteRequest → 必须通过 stub 测试(规则 007)| 类型类别 | 消费代码 | 说明 |
|----------|----------|------|
| 标识符类型(大驼峰非枚举) | fdp.ConsumeIntegral<uint64_t>() | 如 ScreenId/NodeId,底层是 uint64_t typedef |
| 进程/用户标识 | fdp.ConsumeIntegral<uint32_t>() | 如 ProcessId/Uid |
| 文件描述符 | fdp.ConsumeIntegral<int32_t>() | 如 Fd |
| 枚举类型 | static_cast<EnumType>(fdp.ConsumeIntegral<uint8_t>() % ENUM_SIZE) | 必须用 uint8_t(规则 013) |
| 字符串 | fdp.ConsumeRandomLengthString(256) | 限制最大长度防止内存爆炸 |
| 容器 | 先消费长度 uint8_t count = fdp.ConsumeIntegral<uint8_t>() % 32,再循环消费 | 适用于 std::vector<T> |
关键区分:大驼峰命名不一定是枚举,可能是 typedef 别名。必须检查 ENUM_SIZE_MAP 确认是否为枚举。
未知类型处理策略:
TYPE_CONSUMER_MAP 中 → 直接使用映射ENUM_SIZE_MAP → 是枚举则 uint8_t % ENUM_SIZEstd::vector<T> → 是则循环消费tools/fuzz_generator.py 查看 COMPLEX_TYPE_MAP 或构造自定义消费逻辑rand() / random() —— 不可重现,丧失覆盖率追踪意义(规则 017)size 参数当作变异数据传入 API —— fuzz 引擎无法有效变异长度(规则 010)data 指针 —— 可能包含非法地址,100% 触发 SIGSEGV(规则 018)auto 声明 fuzz 变量 —— 无法人工验证类型匹配性(规则 016)uint32_t —— 1 字节变异效率远高于 4 字节(规则 013)| 规则 | 严重度 | 规则名称 | 自动检查 | 自动修复 | |------|--------|----------|----------|----------| | 001 | 🔴 高危 | 目标 API FUZZ 适用性评估(无参数/仅固定参数) | ✅ | ❌ | | 002 | 🔴 高危 | 关键有参 API 覆盖完整性检查 | ✅ | ❌ | | 003 | 🔴 高危 | 变异数据使用检测(FuzzedDataProvider 提取验证) | ✅ | ❌ | | 004 | 🟡 中危 | 变异数据复用检测(同一变量多接口调用) | ✅ | ❌ | | 005 | 🔴 高危 | 复杂参数构造合理性(结构体/指针/回调/容器) | ✅ | ❌ | | 006 | 🟡 中危 | 单文件接口数量限制(超过 10 个告警) | ✅ | ❌ | | 007 | 🔴 高危 | IPC 接口测试规范(必须通过 OnRemoteRequest 测试 stub) | ✅ | ❌ | | 008 | 🟡 中危 | 种子合理构造(corpus 目录、种子文件大小和格式) | ✅ | ❌ | | 009 | 🔴 高危 | FUZZ Driver 安全性(堆溢出/内存泄漏/整数溢出等 10 项检测) | ✅ | ❌ | | 010 | 🔴 高危 | size 参数误用检测(禁止将 size 当作变异数据) | ✅ | ❌ | | 011 | 🔴 高危 | 系统安全准入条件(权限/UID/Capability 等) | ⚠️ 部分 | ❌ 需人工 | | 012 | 🔴 高危 | 目标 API 内部分支覆盖率评估 | ⚠️ 部分 | ❌ 需人工 | | 013 | 🟡 中危 | 枚举值构造优化(优先 uint8_t 而非 uint32_t) | ✅ | ❌ | | 014 | 🔴 高危 | 固定参数使用检测(可豁免场景识别) | ✅ | ❌ | | 015 | 🔴 高危 | 中间产物合法性验证(编解码/序列化/加密等) | ⚠️ 部分 | ❌ 需人工 | | 016 | 🔴 高危 | 数据类型匹配性(字节宽度/符号性/类型类别) | ✅ | ❌ | | 017 | 🔴 高危 | 随机函数禁用检测(禁止 random/rand,强制使用 FDP) | ✅ | ✅ | | 018 | 🔴 高危 | data 指针直接使用检测(禁止解引用/强转/当字符串使用) | ✅ | ❌ | | 019 | 🔴 高危 | 全局变量初始化检查(禁止未初始化全局指针) | ✅ | ✅ |
| 规则 | 规则名称 | 自动检查 | 自动修复 |
|------|----------|----------|----------|
| A | 头文件规范(保护宏、系统头文件、FUZZ_PROJECT_NAME) | ✅ | ❌ |
| B | BUILD.gn 规范(ohos_fuzztest()、fuzz_config_file 路径、group("fuzztest")) | ✅ | ❌ |
| C | project.xml 规范(XML 声明、根元素 fuzz_config、必需配置项) | ✅ | ❌ |
| D | 目录名/文件名一致性(XxxXxx_fuzzer 格式) | ✅ | ❌ |
| E | .cpp 文件头文件完整性(自身头文件名一致且可编译) | ✅ | ❌ |
| F | 版权头规范(Copyright (c) <year> Huawei Device Co., Ltd.) | ✅ | ✅ |
| G | BUILD.gn 目标命名规范(XxxXxxFuzzTest,驼峰式 + FuzzTest 后缀) | ✅ | ❌ |
详细规则说明、正误示例和豁免条件见
rules/目录下的独立 Markdown 文件。 自动修复说明:标注 ✅ 的规则支持fuzz_check.py --fix自动修复(当前支持规则 017/019/F);标注 ⚠️ 的规则需要人工审查确认。
根据任务按需加载:
rules/SecurityCodeReview_FuzzCheck_XXX.md — 违规规则详细说明(正误示例 + 豁免条件)
rules/SecurityCodeReview_FuzzCheck_005.md — 复杂参数构造规则详解
tools/fuzz_generator.py — 用例生成器源码
TYPE_CONSUMER_MAP、ENUM_SIZE_MAP、COMPLEX_TYPE_MAPtemplates/fuzzer.cpp — 代码生成模板
官方文档:
development
Run local code quality checks covering a subset of OpenHarmony gate CI (copyright, CodeArts C/C++) plus additional local checks (pylint/flake8, shellcheck/bashate, gn format). Use before committing to reduce gate failures. Triggers on: /oh-precommit-codecheck, "门禁检查", "门禁预检", "检查代码", "run codecheck", "check code quality", "lint my code", "代码检查", or after completing code implementation. WHEN to use: before git commit, before creating PR, after modifying C/C++/Python/Shell/GN files, when gate CI fails with codecheck defects, or when you want to preview what gate will flag.
development
OpenHarmony PR full lifecycle workflow. Five modes: - Commit: standardized commit with DCO sign-off and Issue linking - Create PR: commit + push to fork + create Issue + create PR on upstream - Fix Codecheck: fetch gate CI codecheck defects from a PR and auto-fix them - Review PR: fetch a PR's changes to local for code review - Fix Review: fetch unresolved review comments from a PR and auto-fix them Triggers on: /oh-pr-workflow, "提交代码", "创建PR", "提个PR", "commit", "修复告警", "修复门禁", "修复codecheck", "fix codecheck", "review pr", "review这个pr", "看下这个pr", "检视pr", "修复review", "修复检视意见", "fix review", or a GitCode PR URL with fix/review intent.
testing
分析 HM Desktop PRD 文档,提取需求信息、验证完整性、检查章节顺序(需求来源→需求背景→需求价值分析→竞品分析→需求描述)、检查 KEP 定义、检测需求冲突并生成结构化分析报告。适用于用户请求:(1) 分析或审查 PRD 文档, (2) 从需求中提取 KEP 列表, (3) 检查 PRD 完整性或一致性, (4) 将需求映射到模块架构, (5) 验证 PRD 格式合规性, (6) 验证竞品分析章节完整性。关键词:PRD分析, requirement extraction, KEP验证, completeness check, chapter order validation, 竞品分析检查, analyze PRD, 需求提取, 完整性检查, 章节顺序验证
development
基于 PRD 文档自动生成鸿蒙系统设计文档,包括架构设计文档和功能设计文档。生成前会分析 OpenHarmony 存量代码结构,确保与现有架构兼容。架构设计文档第2章必须为竞品方案分析,位于需求背景之后。适用于用户请求:(1) 生成架构设计文档, (2) 生成功能设计文档, (3) 从 PRD 生成设计文档, (4) 创建系统架构设计, (5) 编写功能规格说明, (6) 分析 OH 代码结构。关键词:architecture design, functional design, design doc, 竞品方案分析, OpenHarmony code analysis, 架构设计, 功能设计, 设计文档生成, OH代码分析, analyze codebase, competitor analysis