mcpField
C
comprehensive-code-review

comprehensive-code-review

github.com/openharmonyinsight测试与质量3541 次安装11 周前更新
代码仓库

关于 comprehensive-code-review

comprehensive-code-review 是面向 ACE Engine 开发者的 AI 代码审查指南,覆盖 19 多个维度,将通用质量标准与 ACE 架构规则结合,并按严重级别组织报告。

主要功能

  1. 01覆盖 19 多个代码审查维度
  2. 02检查安全、内存、线程与稳定性
  3. 03验证 ACE Engine 架构规范
  4. 04按严重级别整理问题与建议
  5. 05提供拉取请求和文件审查流程

适用场景

  1. 01审查拉取请求中的安全与内存问题
  2. 02检查 components_ng 是否符合 ACE 架构
  3. 03审查变更文件的线程安全
  4. 04合并前整理分优先级的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/openharmonyinsight/openharmony-skills --skill comprehensive-code-review

安装后在 Claude Code 中输入/comprehensive-code-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
assets/
QUICKSTART.md
report_template.md
references/
ACE_ENGINE_SPECIFIC.md
CODE_SMELLS.md
DIMENSIONS.md
MEMORY.md
SECURITY.md
SOLID.md
STABILITY.md

详细介绍

ACE Engine 全面代码审查

快速开始

直接使用 AI 执行全面的代码审查分析:

"Review the code in frameworks/core/components_ng for memory management issues"

"Analyze this pull request focusing on security vulnerabilities"

"Check path/to/code.cpp for ACE Engine architecture compliance"

审查工作流

阶段 1:代码分析

AI 将根据以下内容,从所有相关维度分析代码:

  1. 阅读代码文件 - 了解实现细节
  2. 应用参考标准 - 使用 references/ 目录中的标准
  3. 检查是否符合 ACE Engine 模式 - 验证项目特定约定
阶段 2:按维度审查

从 19 个以上的维度审查代码。完整范围请参阅 DIMENSIONS.md。

高优先级维度:

  • 安全性(严重)- 输入验证、命令注入、缓冲区溢出
  • 内存(严重)- 智能指针、内存泄漏、所有权语义
  • 线程(高)- 数据竞争、死锁、回调安全性
  • 稳定性(高)- 错误处理、边界条件

中优先级维度:

  • 性能 - 算法复杂度、优化机会
  • SOLID 原则 - 单一职责、开闭原则等
  • 代码异味 - 方法过长、类过大、代码重复
  • 可测试性 - 依赖注入、解耦
阶段 3:生成报告

AI 将生成全面的审查报告,包括:

  • 执行摘要 - 按严重程度统计问题数量
  • 严重问题(🔴)- 合并前必须修复
  • 高优先级问题(🟠)- 合并前应修复
  • 中优先级问题(🟡)- 尽快修复
  • 低优先级问题(🟢)- 可选优化
  • 维度分类 - 按类别归纳问题
  • 逐文件详情 - 具体行号和代码片段
  • 建议 - 按优先级排列的待办事项,并附修改前后示例
  • 审查清单 - 合并前验证

维度参考

所有维度的快速参考:

维度关注点严重程度级别参考
稳定性错误处理、边界条件🔴🟠🟡🟢STABILITY.md
性能算法、优化🔴🟠🟡🟢DIMENSIONS.md
线程并发、同步🔴🟠🟡DIMENSIONS.md
安全性输入验证、漏洞🔴🟠🟡SECURITY.md
内存智能指针、内存泄漏🔴🟠🟡MEMORY.md
Modern C++C++11/14/17/20 特性🟠🟡DIMENSIONS.md
Effective C++RAII、Rule of Five🟠🟡DIMENSIONS.md
代码异味22 种异味类型🟠🟡CODE_SMELLS.md
SOLID设计原则🟠🟡SOLID.md
设计模式模式使用🟡🟢DIMENSIONS.md
健壮性容错能力🟠🟡DIMENSIONS.md
可测试性依赖注入🟠🟡DIMENSIONS.md
可维护性代码复杂度🟡🟢DIMENSIONS.md
可观测性日志、监控🟡🟢DIMENSIONS.md
API 设计接口质量🟠🟡DIMENSIONS.md
技术债务TODO/FIXME 跟踪🟡🟢DIMENSIONS.md
向后兼容性API 稳定性🟠🟡DIMENSIONS.md
架构ACE Engine 合规性🔴🟠🟡ACE_ENGINE_SPECIFIC.md

ACE Engine 特定检查

架构验证

四层架构:

Frontend Bridge Layer
    ↓
Component Framework Layer (Pattern/Model/Property)
    ↓
Layout/Render Layer
    ↓
Platform Adapter Layer (OHOS/Preview)

检查项:

  • 不违反层边界
  • 正确使用 Pattern/Model/Property 分层
  • 框架层不直接调用平台接口
组件结构
components_ng/pattern/<component>/
├── *_pattern.h/cpp         # Business logic & lifecycle
├── *_model.h/cpp           # Data model interface
├── *_layout_property.h/cpp # Layout properties
├── *_paint_property.h/cpp  # Render properties
└── *_event_hub.h/cpp       # Event handling
RefPtr 用法
// ✅ Creation
auto node = AceType::MakeRefPtr<FrameNode>();

// ✅ Type-safe casting
auto pattern = AceType::DynamicCast<MenuPattern>(node->GetPattern());
if (!pattern) {
    LOGE("Failed to get pattern");
    return false;
}

// ✅ Breaking cycles with WeakPtr
class Child {
    WeakPtr<Parent> parent_;  // Use weak, not strong
};

// ✅ Safe callbacks
auto weak = AceType::WeakClaim(this);
PostTask([weak]() {
    auto pattern = AceType::DynamicCast<MenuPattern>(weak.Upgrade());
    if (pattern) pattern->Update();
});
命名约定
class MenuPattern {           // PascalCase
public:
    void OnModifyDone();      // PascalCase
    int GetWidth() const;     // Get prefix

private:
    int width_;               // snake_case_ with trailing underscore
    std::string component_id_;  // Abbreviations lowercase
};

constexpr int MAX_MENU_ITEMS = 100;  // UPPER_CASE

严重级别

🔴 CRITICAL - 合并前必须修复

  • 安全漏洞(命令注入、缓冲区溢出)
  • 长时间运行的进程中出现内存泄漏
  • 使用后释放、重复释放
  • 数据竞争
  • 崩溃/未定义行为
  • 违反架构规范

🟠 HIGH - 应在合并前修复

  • 性能下降
  • 违反 API 规范
  • 违反 SOLID 原则
  • 严重的代码异味(大型类、霰弹式修改)
  • RefPtr 使用不当
  • 不安全的回调捕获

🟡 MEDIUM - 尽快修复

  • 轻微的性能问题
  • 代码异味(过长的方法、重复代码)
  • 违反代码风格
  • 非关键路径缺少错误处理

🟢 LOW - 有则更好

  • 缺少注释
  • 轻微的风格问题
  • 优化机会
  • 改进代码文档

常见问题模式

模式维度严重级别检测方式
使用原始指针而非 RefPtr内存HIGH未使用 RefPtr 的 new T()
命令注入安全CRITICALsystem(user_input)
缓冲区溢出安全CRITICALstrcpy()、sprintf()
不安全地捕获 this线程HIGHPostTask 中的 [this]
方法过长(>50 行)代码异味MEDIUM函数长度
类过大(>500 行)代码异味HIGH类的大小
缺少空值检查稳定性HIGH未验证就使用指针
使用 static_cast 而非 DynamicCast内存MEDIUMstatic_cast<T*>

使用示例

审查 Pull Request
"Review the changes in this PR with focus on memory management and threading safety"

AI 将:

  • 分析所有已更改的文件
  • 检查内存管理(RefPtr、WeakPtr、原始指针)
  • 验证线程安全性(回调捕获、PostTask 用法)
  • 报告问题及其行号和严重级别
安全审计
"Perform a security audit of path/to/code, focusing on input validation and potential vulnerabilities"

AI 将检查:

  • 命令注入风险(system() 调用)
  • 缓冲区溢出漏洞(strcpy、sprintf)
  • 未经验证的用户输入
  • 不安全的类型转换
内存泄漏检测
"Analyze frameworks/core/components for potential memory leaks and improper RefPtr usage"

AI 将识别:

  • 未使用智能指针的原始 new/delete
  • 未使用 WeakPtr 的循环引用
  • DynamicCast 后缺少空值检查
  • 所有权语义使用不当
架构合规性检查
"Verify that components_ng/menu follows the four-layer architecture and Pattern/Model/Property separation"

AI 将验证:

  • 是否符合四层架构
  • Pattern/Model/Property 是否分离
  • 是否违反层边界
  • 组件生命周期方法(OnModifyDone 等)

集成示例

提交前钩子

对于提交前钩子,可考虑使用传统静态分析工具:

#!/bin/bash
# .git/hooks/pre-commit

CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(cpp|cc|cxx|h|hpp|ts|tsx)$')

if [ -n "$CHANGED_FILES" ]; then
    echo "Running basic static analysis..."
    # Use clang-tidy, cppcheck, eslint, etc.
    for file in $CHANGED_FILES; do
        if [[ $file == *.cpp || $file == *.h ]]; then
            clang-tidy $file --checks='*' || true
        elif [[ $file == *.ts ]]; then
            eslint $file || true
        fi
    done
fi
手动审查工作流

若要进行全面的 AI 驱动审查:

  1. 确定要审查的代码(PR、特定文件或目录)
  2. 指定关注领域并请求审查
  3. AI 根据参考标准分析代码
  4. 查看带有严重级别标记的问题审查结果
  5. 处理严重和高优先级问题
  6. 重新请求审查以进行验证

参考资料

references/ 中提供了所有维度的详细文档:

资源

评审清单

合并代码前:

代码质量:

  • 无严重问题
  • 已解决或记录高优先级问题
  • 无编译器警告
  • 静态分析通过

架构:

  • 遵循四层架构
  • 正确区分 Pattern/Model/Property
  • 无层边界违规

内存:

  • 无内存泄漏
  • 正确使用 RefPtr
  • 使用 WeakPtr 打破循环引用
  • 回调使用 WeakClaim

安全:

  • 已验证所有输入
  • 无命令注入
  • 无缓冲区溢出
  • 已保护敏感数据

测试:

  • 已添加单元测试
  • 已覆盖边缘情况
  • 已测试错误场景

评论

支持 Markdown