mcpField
D
dsoftbus_safety_guard

dsoftbus_safety_guard

github.com/openharmonyinsightセキュリティ3583 回インストール11 週間前に更新
リポジトリ

dsoftbus_safety_guard について

OpenHarmony dsoftbus 向けの読み取り専用コードレビュー用スキルです。セキュリティ規則、コード品質、ファイル横断の処理、制御フローを確認し、ソースを変更せずに指摘と修正案を報告します。

主な機能

  1. 0140 項目以上のセキュリティ規則を確認
  2. 02ファイル横断の呼び出しとデータフローを分析
  3. 03制御フローと到達不能コードを検査
  4. 04並行処理とコード品質をレビュー
  5. 05レポートと修正案のパッチを生成

活用シーン

  1. 01dsoftbus の C/C++ コードレビュー
  2. 02IPC やネットワーク通信の安全性確認
  3. 03マルチスレッドコードのリソース管理確認
  4. 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/SoftBusSocketClosefd 管理-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つ)
  • ポインターのビット演算を禁止 → 詳細
  • sizeof の使用を確認 → 詳細
  • NULL ポインターの逆参照を確認 → 詳細
  • IPC の結果が NULL でないことを確認 → 詳細
3. 一時変数(3つ)
  • ポインター変数の初期化 → 詳細
  • リソース記述子変数の初期化 → 詳細
  • bool 変数の初期化 → 詳細
4. 配列インデックス(2つ)
  • 配列の範囲外アクセスのリスク → 詳細
  • 外部入力インデックスの妥当性チェック → 詳細
5. ロック管理(3つ)
  • Lock/Unlock をペアで使用 → 詳細
  • ロック変数の一貫性 → 詳細
  • すべての戻り経路でロックを解放 → 詳細
6. fd 管理(2つ)
  • SocketCreate/Close をペアで使用 → 詳細
  • fd が正しくクローズされているか → 詳細
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条)
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 - 统计数据

常见错误速查表

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

错误模式危险等级快速检测详见章节
空指针解引用🔴 严重*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+条规则的详细解释和代码示例
    • 每条规则的问题描述、风险等级、问题示例、修复方案、检查要点
    • 包含完整代码示例和最佳实践
    • 包含格式化打印类型匹配表和常用安全函数列表
附加资源

使用技巧

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

报告要求

  • 报告自动生成:审查完成后自动在 d:/code-review-时间戳/ 目录生成报告
  • 报告目录格式:使用 YYYYMMDD-HHMMSS 格式的时间戳
  • 文件编码:报告文件使用 UTF-8 编码,确保中文正常显示
  • 修复代码仅供参考:所有修复代码只出现在报告文件的代码块中,不写入源代码目录

コメント