dsoftbus_safety_guard

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dsoftbus_safety_guard" with this command: npx skills add openharmonyinsight/openharmony-skills/openharmonyinsight-openharmony-skills-dsoftbus-safety-guard

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

触发条件

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

触发示例:

  • 软总线安全卫士 请审查这个文件: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

*ptr 或 ptr-> 使用 指针安全-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条)
  • 禁止返回 SOFTBUS_ERR → 详细说明
  1. 指针安全(4条)
  • 禁止指针位运算 → 详细说明

  • 检查 sizeof 使用 → 详细说明

  • 空指针解引用检查 → 详细说明

  • IPC 结果判空 → 详细说明

  1. 临时变量(3条)
  • 指针变量初始化 → 详细说明

  • 资源描述符初始化 → 详细说明

  • bool 变量初始化 → 详细说明

  1. 数组下标(2条)
  • 数组越界风险 → 详细说明

  • 外部输入下标校验 → 详细说明

  1. 锁管理(3条)
  • Lock/Unlock 成对使用 → 详细说明

  • 锁变量一致性 → 详细说明

  • 所有返回路径释放锁 → 详细说明

  1. fd 管理(2条)
  • SocketCreate/Close 成对使用 → 详细说明

  • fd 正确关闭 → 详细说明

  1. 内存管理(11条)
  • 申请前大小合法性校验 → 详细说明

  • SoftBusMalloc/SoftBusCalloc 与 SoftBusFree 成对使用 → 详细说明

  • new 与 delete 成对使用 → 详细说明

  • 内存申请后判空 → 详细说明

  • 全局变量释放后置空 → 详细说明

  • 循环体释放后置空 → 详细说明

  • 特定资源管理(regcomp/regfree, cJSON_Parse/Delete等) → 详细说明

  1. 敏感信息(3条)
  • 禁止打印密钥、路径、地址等 → 详细说明

  • 堆栈密钥使用后清零 → 详细说明

  • 匿名化打印敏感标识符 → 详细说明

  1. 整数运算(2条)
  • 溢出、反转、除零风险 → 详细说明

  • 有符号整数位运算禁止 → 详细说明

  1. 循环变量(2条)
  • 无符号数死循环 → 详细说明

  • 外部数据控制循环校验 → 详细说明

  1. 安全函数(2条)
  • 安全函数返回值检查 → 详细说明

  • 缓冲区大小一致性 → 详细说明

  1. 权限校验(1条)
  • 新增 SDK IPC 接口权限校验 → 详细说明
  1. 外部输入校验(4条)
  • 路径规范化 → 详见

  • TLV 解析长度合法性 → 详见

  • 源 buffer 实际大小检查 → 详见

  • 完整校验方案 → 详见

  1. 外部数据有效性(3条)
  • 基于外部输入的加减法/内存申请校验 → 详见

  • 默认长度校验 → 详见

  • TLV 格式长度校验 → 详见

  1. 常见问题(5条)
  • 异常分支资源释放 → 详见

  • 宏定义资源泄漏 → 详见

  • 函数返回值一致性 → 详见

  • 格式化打印类型匹配 → 详见

  • 结构体字节对齐 → 详见

代码审查工作流

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

场景A:用户指定路径

  • 检查该路径下是否有修改:git status --porcelain <path>

  • 如果有修改,提供选项:

  • 全量检视该路径所有代码

  • 增量检视修改的代码(共N个文件)

  • 如果无修改,直接执行全量检视

场景B:用户未指定路径

  • 检查当前仓库是否有修改:git status --porcelain

  • 提供选项:

  • 检视全仓代码

  • 指定检视路径

  • 检视本地修改的代码(共N个文件)

  • 根据用户选择执行

第二步:代码规范检查

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

  • 规则详解文档 - 每条规则的详细说明和代码示例

  • 使用 Grep 工具搜索违规模式

  • 结合上下文分析,避免误报

第三步:跨文件调用分析

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

  • 调用图构建

  • 跨文件资源追踪(malloc/free分离)

  • 跨文件数据流分析

  • 跨文件错误处理

  • 全局变量跨文件访问

第四步:控制流分析

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

  • 控制流图构建

  • 不可达代码检测

  • 路径敏感分析

  • 未初始化变量分析

  • 资源释放路径分析

第五步:生成修复建议

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

对每个问题提供:

  • 完整的函数或代码块修复示例

  • 修改原因注释

  • 多种修复方案(如有)

第六步:生成检视报告

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

报告文件:

  • code_review_report.md

  • 完整审查报告

  • code_fixes.patch

  • 所有修复代码(Git patch格式)

  • statistics.json

  • 统计数据

常见错误速查表

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

错误模式 危险等级 快速检测 详见章节

空指针解引用 🔴 严重 *ptr 或 ptr-> 前无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+条规则的详细解释和代码示例

  • 每条规则的问题描述、风险等级、问题示例、修复方案、检查要点

  • 包含完整代码示例和最佳实践

  • 包含格式化打印类型匹配表和常用安全函数列表

附加资源

  • 常见错误速查表 - 快速定位错误模式

  • 使用技巧 - 如何有效使用本技能

使用技巧

  • 快速定位问题:使用"快速参考"表格根据代码特征查找相关规则

  • 深入学习规则:阅读 references/security_rules_explained.md 了解每条规则的详细说明和代码示例

  • 分类审查:根据"规则分类"按类别逐项检查,避免遗漏

  • 优先处理严重问题:参考"常见错误速查表"优先修复高危问题

  • 使用工作流程:按照"代码审查工作流"系统性进行审查

报告要求

  • 报告自动生成:审查完成后自动在 d:/code-review-时间戳/ 目录生成报告

  • 报告目录格式:使用 YYYYMMDD-HHMMSS 格式的时间戳

  • 文件编码:报告文件使用 UTF-8 编码,确保中文正常显示

  • 修复代码仅供参考:所有修复代码只出现在报告文件的代码块中,不写入源代码目录

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

openharmony-cpp

No summary provided by upstream source.

Repository SourceNeeds Review
General

oh-ut-generator

No summary provided by upstream source.

Repository SourceNeeds Review
General

cpp-core-guidelines-review

No summary provided by upstream source.

Repository SourceNeeds Review
General

openharmony-download

No summary provided by upstream source.

Repository SourceNeeds Review