组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
C++ Code Review Master是一项面向实际任务的技能,主要用于组合式 C++ 代码评审方案,整合静态分析、C++ 专项检查、多轮迭代评审与 AI 推理能力;C++ 专项关注点;
RAII / 所有权;构造/析构顺序、智能指针误用、锁粒度;不必要的拷贝、临时对。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
组合式 C++ 代码评审方案,整合静态分析、C++ 专项检查、多轮迭代评审与 AI 推理能力。
用户发起 C++ 代码评审
│
▼
┌─────────────────────────┐
│ 1. C++ 专项检查 │ ← cpp skill(内存安全、悬垂引用、UB、所有权)
│ + 静态分析预检 │ ← code-review-sr(本地 regex 预检)
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 2. 三路并行 AI 评审 │ ← iterative-code-review(3 个 reviewer 并行)
│ │
│ Reviewer-1 → 功能正确性 │
│ Reviewer-2 → 性能与内存 │
│ Reviewer-3 → 安全与最佳实践│
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 3. 汇总 + 评分报告 │ ← modified-code-review(评分、性价比)
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 4. 可选自动修复 │ ← code-review-fix(自动修复 bug/安全/风格)
└─────────────────────────┘
| 维度 | C++ 专项关注点 |
|---|---|
| 内存安全 | 内存泄漏、悬垂引用、野指针、double-free、use-after-free |
| 未定义行为 | 未初始化变量、数据竞争、整数溢出、类型双关 |
| RAII / 所有权 | 构造/析构顺序、智能指针误用、锁粒度 |
| 性能 | 不必要的拷贝、临时对象、虚函数开销、内联建议 |
| 安全 | 缓冲区溢出、格式化字符串、指针运算、原始 new/delete |
| 可读性 | 命名规范、头文件组织、模板复杂度、注释完整性 |
| 最佳实践 | 现代 C++(C++17/20/23)特性、constexpr、 Concepts |
gh pr status / git log)执行本地静态分析(code-review-sr 的 regex 预检 + cpp skill 规则):
// 检测 C++ 常见问题模式
const cppPatterns = [
{ pattern: /news+w+s*[/, severity: 'high', type: 'memory', message: 'Consider using std::vector or smart pointers instead of raw new[]' },
{ pattern: /deletes+w+s*[/, severity: 'high', type: 'memory', message: 'Use RAII: prefer smart pointers or containers' },
{ pattern: /memcpys*(/, severity: 'medium', type: 'security', message: 'Check buffer sizes carefully; prefer std::copy or std::memmove for overlapping regions' },
{ pattern: /sprintfs*(/, severity: 'high', type: 'security', message: 'sprintf is unsafe; use snprintf or std::format (C++20)' },
{ pattern: /std::auto_ptr/, severity: 'medium', type: 'modern-cpp', message: 'std::auto_ptr is deprecated; use std::unique_ptr' },
{ pattern: /virtuals+w+s*([^)]*)s*consts*{s*returns+0s*;/, severity: 'medium', type: 'modern-cpp', message: 'Pure virtual should be = 0, not return 0' },
{ pattern: /mutables+w+;/, severity: 'low', type: 'concurrency', message: 'mutable member in const method; ensure thread safety if accessed from multiple threads' },
{ pattern: /#defines+w+s+w+/, severity: 'low', type: 'modern-cpp', message: 'Prefer constexpr or const variables over macros' },
];
启动 3 个独立 reviewer,每个关注不同维度:
综合所有 reviewer 意见,输出统一报告:
## C++ Code Review Report ### 项目概览 - 评审范围:<文件/目录/diff> - 评审模式:<全量/增量/PR> - 评审时间:### C++ 专项问题 | 严重性 | 类型 | 位置 | 问题描述 | |--------|------|------|----------| | 🔴 High | Memory | foo.cpp:42 | Raw new[] without corresponding delete[] | | 🟡 Medium | UB | bar.cpp:87 | Uninitialized member variable | | 🟡 Medium | Security | baz.cpp:23 | sprintf usage — buffer overflow risk | | 🟢 Low | Modern C++ | utils.cpp:15 | Consider using std::string_view instead of const std::string& | ### 功能问题 ... ### 性能问题 ... ### 代码评分(百分制) | 维度 | 得分 | |------|------| | 内存安全 | XX/100 | | 逻辑正确性 | XX/100 | | 性能 | XX/100 | | 安全 | XX/100 | | 可读性 | XX/100 | | **总分** | **XX/100** | ### 修复优先级 1. [P0 - 必须修复] ... 2. [P1 - 强烈建议] ... 3. [P2 - 建议优化] ... 4. [P3 - 可选改进] ...
用户确认后,使用 code-review-fix 执行修复:
# 只检查 /cpp-review --security # 审查并修复 /cpp-review --fix # 学习模式 /cpp-review --explain
| 命令 | 场景 |
|---|---|
/cpp-review |
评审当前打开的 C++ 文件 |
/cpp-review |
评审指定文件 |
/cpp-review --diff |
评审当前 git diff |
/cpp-review --pr |
评审当前 PR |
/cpp-review --fix |
评审并自动修复 |
/cpp-review --full |
全量项目评审 |
| Skill | 用途 |
|---|---|
cpp |
C++ 专项规则(内存、UB、所有权) |
code-review-sr |
本地静态分析 + AI 深度评审 |
iterative-code-review |
多轮迭代 + 多 reviewer 并行 |
modified-code-review |
评分报告 + 性价比分析 |
code-review-fix |
自动修复 |