dsoftbus_safety_guard について
OpenHarmony dsoftbus 向けの読み取り専用コードレビュー用スキルです。セキュリティ規則、コード品質、ファイル横断の処理、制御フローを確認し、ソースを変更せずに指摘と修正案を報告します。
主な機能
- 0140 項目以上のセキュリティ規則を確認
- 02ファイル横断の呼び出しとデータフローを分析
- 03制御フローと到達不能コードを検査
- 04並行処理とコード品質をレビュー
- 05レポートと修正案のパッチを生成
活用シーン
- 01dsoftbus の C/C++ コードレビュー
- 02IPC やネットワーク通信の安全性確認
- 03マルチスレッドコードのリソース管理確認
- 04指摘事項と修正案の作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openharmonyinsight/ openharmony-skills --skill dsoftbus_safety_guardインストール後、Claude Code で/dsoftbus_safety_guardを入力して読み込まれたか確認します。
同梱ファイルreferences/security_rules_explained.md
詳細
ソフトバスセキュリティガード - コードレビューのスキル
トリガー条件
⚠️ このスキルは、ユーザーの入力に「ソフトバスセキュリティガード」が含まれる場合にのみ呼び出されます
トリガー例:
ソフトバスセキュリティガード このファイルをレビューしてください:D:\code\example.cソフトバスセキュリティガードを使用して、このディレクトリを確認してくださいソフトバスセキュリティガード lnn_lane_dfx.cファイルを検査してください
スキルの概要
このスキルは、OpenHarmony distributed soft bus (dsoftbus) 通信コンポーネント専用のコードレビュー ツールで、以下を対象とします。
- ログ規約チェック:1つの主要ルール
- セキュアコーディングチェック:11の大分類にわたる40以上のルール
- 一般的なコード品質チェック:コードの複雑度、可読性、並行処理の安全性など
- ファイル間呼び出し分析:呼び出しチェーンの追跡、リソースの受け渡し、データフロー分析
- 制御フロー分析:パス依存分析、到達不能コードの検出
⚠️ 基本原則:このスキルは読み取り専用のコードレビューツールです。コードを分析してレポートを生成するのみで、ソースファイルは一切変更しません。
適用シーン
- 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 を返すことを禁止 → 詳細
2. ポインター安全性(4つ)
3. 一時変数(3つ)
4. 配列インデックス(2つ)
5. ロック管理(3つ)
6. fd 管理(2つ)
7. メモリ管理(11個)
- メモリ確保前にサイズの妥当性をチェック → 詳細
- SoftBusMalloc/SoftBusCalloc と SoftBusFree をペアで使用 → 詳細
- new と delete をペアで使用 → 詳細
- メモリ確保後に NULL でないことを確認 → 詳細
- グローバル変数の解放後に NULL を設定 → 詳細
- ループ内での解放後に NULL を設定 → 詳細
- 特定のリソース管理(regcomp/regfree、cJSON_Parse/Delete など) → 詳細
8. 機密情報(3つ)
9. 整数演算(2つ)
10. 循环变量(2条)
11. 安全函数(2条)
12. 权限校验(1条)
- 新增 SDK IPC 接口权限校验 → 详细说明
13. 外部输入校验(4条)
14. 外部数据有效性(3条)
15. 常见问题(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 编码,确保中文正常显示
- 修复代码仅供参考:所有修复代码只出现在报告文件的代码块中,不写入源代码目录