Skill-Details
ascendc-operator-code-review
Code review specialized for Ascend C operator safety rules.
Vor Nutzung prüfen
Die automatische Prüfung bewertet Relevanz, nicht Sicherheit oder Empfehlung. Lies vor der Nutzung die Quellanweisungen.
SKILL.md
Dieser Auszug wurde bei der Prüfung gespeichert. Die externe Quelle enthält die vollständige und aktuelle Version.
--- name: ascendc-operator-code-review description: "Ascend C 代码检视技能。基于假设检验方法论对代码进行安全规范检视。调用时必须明确提供:代码片段和检视规则描述。TRIGGER when: 用户要求代码检视、代码review、询问代码安全问题、检查编码规范、或需要检查特定代码问题(如内存泄漏、整数溢出、空指针等)。关键词:Ascend C、代码检视、代码review、安全规范、内存、指针、溢出、泄漏、编码规范。" --- # Ascend C 代码检视技能 ## 核心原则 1. **合规优先** - 所有检视动作映射至编码规范具体条款,100%覆盖无遗漏 2. **可审计可复用** - 检视动作全程日志记录 3. **简洁高效** - 检视报告结构化,清晰明了 ## 调用接口 ### 必需参数 调用此技能时,必须明确提供以下参数: **参数1:代码片段** - 待检视的代码内容 - 可以是函数、代码块、文件内容等 **参数2:检视规则描述** - 明确指定要检视的问题类型 - 例如:`检查整数溢出`、`检查内存泄漏`、`检查空指针解引用`等 - 或指定具体的规范文件路径 **参数3:规范文件路径**(可选) - 指定具体的编码规范文件路径 - 如果未指定,将根据检视规则描述查找对应的规范文件 ### 参数校验 如果缺少任何一个必需参数,应: 1. 明确通知用户缺少哪些参数 2. 放弃执行检视 3. 提示用户提供完整参数 ### 规范文件引用 当用户指定检视规则描述时,按以下规则匹配规范文件: - `数值运算`、`溢出`、`除零` → references/01_numeric_operations.md - `内存`、`指针`、`越界` → references/02_memory_pointer_safety.md - `资源`、`泄漏` → references/03_resource_management.md - `输入`、`验证` → references/04_input_validation.md - `并发`、`线程` → references/05_concurrency_safety.md - `算子接口`、`Runtime`、`Tiling`、`动态Shape` → references/06_operator_interface.md - `接口兼容性`、`ABI` → references/07_interface_compatibility.md - 用户直接指定路径 → 使用指定路径 ## 检视流程(假设检验驱动) ### 阶段一:准备 1. 校验必需参数是否完整 2. 根据检视规则描述或指定路径读取编码规范文件 3. 确认待检视的代码片段 ### 阶段二:假设检验(核心) **步骤1:代码段识别** 将目标代码划分为独立的代码段(函数、语句块、逻辑单元) **步骤2:假设建立** 对每个代码段建立假设: - **原假设 H0**:该代码段是安全的 - **备择假设 H1**:该代码段存在风险 - **自信值初始化**:0% **步骤3:证据收集与评估** 按维度系统性寻找证据: | 证据类型 | 分析动作 | 分值规则 | |---------|---------|---------| | 红线规范违反 | 对照红线规范条款识别严重违规点 | 有效证据 +40% | | 一般规范违反 | 对照一般规范条款识别违规点 | 有效证据 +20% | | 上下文防御缺失 | 检查作用域内是否有防御代码 | 无防御 +30% | | 函数调用链风险 | LSP/Grep 分析调用函数内部逻辑 | 发现风险 +25% | | 数据流追踪风险 | 分析变量来源、运算过程 | 发现风险 +25% | - 提供数值运算类型证据时,需提供明确的风险运算案例(如溢出,越界,回绕,等) **分析要求**: - 使用LSP获取代码中的符号定义,使用Grep查找依赖关系 - 风险代码必须要检查是否在当前文件作用域内的其他位置进行防御 - 遇到函数调用,必须查看函数内部逻辑并综合判断 - 遇到存在风险的结构体或成员变量,必须查看定义和运算过程 **步骤4:证据有效性校验** 排除误报: - 已在作用域其他位置进行有效防御 → 排除 - 上下文可证明不可能触发风险 → 排除 **步骤5:决策判断** 计算自信值并决策: - 自信值 = Σ 有效证据分值 - **决策规则**:当自信值超过60%时,判定代码段存在风险,进入报告生成;否则继续检查下一代码段 ### 阶段三:报告生成 1. 按代码检视报告模板格式生成报告 2. 每个问题详情前展示假设检验过程(证据链和自信值计算过程) ## 注意事项 1. 请先完整阅读对应的编码规范文件,并根据这些规范进行代码review,其他的一概不统计 2. 检视过程中,存疑代码块存在函数调用行为,必须动用LSP工具,或者搜索工具,实现深层次分析 3. 不确定的编码规范问题,在输出报告中以存疑的形式进行列举,供用户自主判断 4. 检视报告中列举的问题代码不宜过长,描述清晰问题代码即可 5. 返回检视结果时,必须仔细检查结果中风险代码行的行数是否正确 6. 返回检视结果时,所有风险代码块都应该被引用,不能只展示一个行数 ## 输出规范 ### 检视报告必需包含 1. 检视类别 2. 风险点列表(含行号、代码片段) 3. 证据链(展示假设检验过程) 4. 建议修复方案 ### 输出格式 详见:agents/ascendc-ops-reviewer/style/code_review_summary_style.txtVollständige Quelle auf GitHub lesen (öffnet externe Seite)