dsoftbus_safety_guard

SKILL.md

软总线安全卫士 - 代码审查技能

触发条件

⚠️ 此技能仅在用户输入包含"软总线安全卫士"时才会被调用

触发示例

  • 软总线安全卫士 请审查这个文件:D:\code\example.c
  • 请使用软总线安全卫士检查这个目录
  • 软总线安全卫士 检视lnn_lane_dfx.c文件

技能概述

本技能是 OpenHarmony distributed soft bus (dsoftbus) 通信组件的专用代码审查工具,涵盖:

  • 日志规范检查:1条核心规则
  • 安全编码检查:40+条规则,覆盖11大类别
  • 通用代码质量检查:代码复杂度、可读性、并发安全等
  • 跨文件调用分析:调用链追踪、资源传递、数据流分析
  • 控制流分析:路径敏感分析、不可达代码检测

⚠️ 核心原则:本技能为只读代码审查工具,仅分析代码并生成报告,不修改任何源文件

适用场景

  • OpenHarmony dsoftbus 组件代码
  • C/C++ 系统级通信代码
  • 涉及 IPC、网络通信、多线程的代码
  • 需要严格日志规范和安全编码的代码

快速参考:关键规则索引

根据代码特征快速定位相关规则:

代码特征 相关规则
函数返回 SOFTBUS_ERR 日志规范-1
指针位运算 (&, |, ^, ~, <<, >>) 指针安全-1, 整数运算-2
*ptrptr-> 使用 指针安全-3, 临时变量-1
arr[index] 访问 数组下标-1,2
SoftBusMutexLock/SoftBusMutexUnlock 锁管理-1,2,3
SoftBusSocketCreate/SoftBusSocketClose fd管理-1,2
malloc/free, new/delete 内存管理-1~11
HILOG_INFO 打印敏感信息 敏感信息-1,2,3
- 无符号数递减 (i--)
memcpy_s, strcpy_s 安全函数-1,2
路径操作 (., ..) 外部输入-1
IPC 接口新增 权限校验-1

📚 详细规则说明

每个规则的详细解释、代码示例和修复方案请查看

  • 规则详解与示例 - 40+条规则的完整文档
    • 每条规则的问题描述、风险等级、问题示例、修复方案、检查要点
    • 包含完整代码示例和最佳实践
    • 包含格式化打印类型匹配表和常用安全函数列表

🏷️ 规则分类(快速索引)

💡 快速定位: 点击每个规则后的链接可查看详细说明和代码示例

1. 日志规范(1条)

2. 指针安全(4条)

3. 临时变量(3条)

4. 数组下标(2条)

5. 锁管理(3条)

6. fd 管理(2条)

7. 内存管理(11条)

8. 敏感信息(3条)

9. 整数运算(2条)

10. 循环变量(2条)

11. 安全函数(2条)

12. 权限校验(1条)

13. 外部输入校验(4条)

  • 路径规范化 → 详见
  • TLV 解析长度合法性 → 详见
  • 源 buffer 实际大小检查 → 详见
  • 完整校验方案 → 详见

14. 外部数据有效性(3条)

  • 基于外部输入的加减法/内存申请校验 → 详见
  • 默认长度校验 → 详见
  • TLV 格式长度校验 → 详见

15. 常见问题(5条)

  • 异常分支资源释放 → 详见
  • 宏定义资源泄漏 → 详见
  • 函数返回值一致性 → 详见
  • 格式化打印类型匹配 → 详见
  • 结构体字节对齐 → 详见

代码审查工作流

第一步:交互式选择检视范围

场景A:用户指定路径

  1. 检查该路径下是否有修改:git status --porcelain <path>
  2. 如果有修改,提供选项:
    • 全量检视该路径所有代码
    • 增量检视修改的代码(共N个文件)
  3. 如果无修改,直接执行全量检视

场景B:用户未指定路径

  1. 检查当前仓库是否有修改:git status --porcelain
  2. 提供选项:
    • 检视全仓代码
    • 指定检视路径
    • 检视本地修改的代码(共N个文件)
  3. 根据用户选择执行

第二步:代码规范检查

按照40+条规则逐项检查,参考:

  • 规则详解文档 - 每条规则的详细说明和代码示例
  • 使用 Grep 工具搜索违规模式
  • 结合上下文分析,避免误报

第三步:跨文件调用分析

核心能力:分析函数调用链,追踪跨文件的数据流和资源传递

  • 调用图构建
  • 跨文件资源追踪(malloc/free分离)
  • 跨文件数据流分析
  • 跨文件错误处理
  • 全局变量跨文件访问

第四步:控制流分析

核心能力:分析代码执行路径,识别不可达代码和路径敏感问题

  • 控制流图构建
  • 不可达代码检测
  • 路径敏感分析
  • 未初始化变量分析
  • 资源释放路径分析

第五步:生成修复建议

⚠️ 重要限制仅生成修复建议代码到报告中,严禁直接修改源文件

对每个问题提供:

  • 完整的函数或代码块修复示例
  • 修改原因注释
  • 多种修复方案(如有)

第六步:生成检视报告

创建报告目录:d:/code-review-YYYYMMDD-HHMMSS/

报告文件

  • code_review_report.md - 完整审查报告
  • code_fixes.patch - 所有修复代码(Git patch格式)
  • statistics.json - 统计数据

常见错误速查表

💡 详细检查方法: 每种错误模式的详细检查方法、代码示例和修复方案,请查看 检查清单

错误模式 危险等级 快速检测 详见章节
空指针解引用 🔴 严重 *ptrptr-> 前无NULL检查 指针安全-3
锁未释放 🔴 严重 return前未调用Unlock 锁管理-1
内存泄漏 🔴 严重 malloc未配对free 内存管理-2
敏感信息泄露 🔴 严重 日志打印密钥/udid 敏感信息-1
数组越界 🔴 严重 arr[index] 未验证范围 数组下标-1
无符号死循环 🔴 严重 uint32_t i-- 循环变量-1
指针位运算 🟡 警告 ptr & mask 指针安全-1
整数溢出 🟡 警告 size + offset 未检查 整数运算-1
返回SOFTBUS_ERR 🟡 警告 return SOFTBUS_ERR 日志规范-1
未初始化变量 🟡 警告 声明未赋初值 临时变量-1

检查原则

上下文分析

  • 检查时要看上下文,确认是否已有防护措施
  • 避免误报(如:全局变量可能在别处初始化)

灵活运用

  • 除40+条明确定义规则外,还需进行通用代码质量检查
  • 代码复杂度、可读性、并发安全、性能问题等

重点关注

  • 处理外部输入的代码路径
  • 宏定义中的资源使用
  • 条件编译中的问题代码
  • 高风险安全问题(空指针、内存泄漏、敏感信息泄露)

优先级排序

安全编码问题 > 日志规范问题
严重问题 > 警告问题 > 提示问题

核心限制

⚠️ 严禁修改源代码

  • 本技能只读取和分析代码
  • 生成修复建议仅用于报告
  • 绝不直接修改任何源文件
  • 只读操作:仅使用 Read、Grep、Glob 等只读工具

📖 参考文档

详细规则说明

  • 规则详解与示例 - 40+条规则的详细解释和代码示例
    • 每条规则的问题描述、风险等级、问题示例、修复方案、检查要点
    • 包含完整代码示例和最佳实践
    • 包含格式化打印类型匹配表和常用安全函数列表

附加资源


使用技巧

  1. 快速定位问题:使用"快速参考"表格根据代码特征查找相关规则
  2. 深入学习规则:阅读 references/security_rules_explained.md 了解每条规则的详细说明和代码示例
  3. 分类审查:根据"规则分类"按类别逐项检查,避免遗漏
  4. 优先处理严重问题:参考"常见错误速查表"优先修复高危问题
  5. 使用工作流程:按照"代码审查工作流"系统性进行审查

报告要求

  • 报告自动生成:审查完成后自动在 d:/code-review-时间戳/ 目录生成报告
  • 报告目录格式:使用 YYYYMMDD-HHMMSS 格式的时间戳
  • 文件编码:报告文件使用 UTF-8 编码,确保中文正常显示
  • 修复代码仅供参考:所有修复代码只出现在报告文件的代码块中,不写入源代码目录
Weekly Installs
22
GitHub Stars
3
First Seen
Feb 10, 2026
Installed on
opencode20
gemini-cli16
github-copilot16
codex16
kimi-cli16
amp16