乐于分享
好东西不私藏

AICodeReview 代码审查

AICodeReview 代码审查

CodeReviewAI

基于 AI 大模型的 C# 代码审查工具,支持多种国产及国际 AI 模型,提供命令行和 Visual Studio 扩展两种使用方式。在代码提交前自动进行智能审查,帮助开发者发现潜在的代码缺陷、性能瓶颈和安全漏洞。

功能特性

多模型支持

支持 4 种 AI 大模型,可自由切换:

模型
适配器
默认模型 ID
特点
豆包 (Doubao)
DoubaoAdapter doubao-seed-2-0-code-preview-260215
专注中文技术栈,代码质量与性能优化
千问 (Qianwen)
QianwenAdapter qwen-plus
强调安全漏洞检测(SQL注入、XSS、空引用)
OpenAI
OpenAIAdapter gpt-4-turbo
英文审查,.NET/ASP.NET Core 最佳实践
智谱 (Zhipu)
ZhipuAdapter glm-4
中文技术术语,本地化文档引用

智能代码审查

  • Git Diff 分析
    :自动获取 Git 仓库中的代码变更,仅审查修改的代码行及其上下文
  • C# 专项审查
    :仅对 .cs 文件进行审查,针对 .NET 6/8、C# 10/11、ASP.NET Core 技术栈
  • RCIF 提示词框架
    :使用 Role-Context-Instruction-Format 结构化提示词,确保审查结果规范
  • 优先级标注
    :自动识别高优先级问题 [高优先级] 和一般建议 [建议]
  • 结构化输出
    :每个问题包含位置、原始代码、改进建议、解释和参考文献

审查结果缓存

  • 基于 SHA256 哈希的审查结果缓存,避免重复调用 API
  • 可配置缓存过期时间(默认 30 分钟)

Git 集成

  • Pre-commit Hook
    :安装 Git 钩子,在 git commit 时自动触发 AI 审查
  • 信号文件机制
    :通过文件信号与 Visual Studio 扩展通信,实现跨进程审查
  • 自动提交
    :审查通过后可自动执行 git commit/push 操作

Visual Studio 扩展

  • 审查窗口
    :左右分栏展示修改代码与 AI 改进建议
  • 模型选择
    :在审查窗口中实时切换 AI 模型
  • 一键操作
    :审查完成后可直接提交本地暂存、推送、或拉取后推送
  • 设置窗口
    :图形化配置默认模型、API 密钥和缓存时间
  • 暗色主题
    :与 Visual Studio 暗色主题一致的 UI 风格

项目结构

CodeReviewAI/├── config/│   └── config.json                    # 模型配置文件├── src/│   ├── CodeReviewAI.Core/             # 核心库│   │   ├── Adapters/                  # AI 模型适配器│   │   │   ├── IModelAdapter.cs       # 适配器接口│   │   │   ├── ModelAdapterFactory.cs # 适配器工厂│   │   │   ├── OpenAIAdapter.cs       # OpenAI 适配器│   │   │   ├── DoubaoAdapter.cs       # 豆包适配器│   │   │   ├── QianwenAdapter.cs      # 千问适配器│   │   │   └── ZhipuAdapter.cs        # 智谱适配器│   │   ├── Git/│   │   │   └── GitService.cs          # Git 操作服务│   │   ├── Models/│   │   │   ├── GitDiffEntry.cs        # Git Diff 数据模型│   │   │   ├── ModelConfig.cs         # 模型配置模型│   │   │   ├── ReviewIssue.cs         # 审查问题模型│   │   │   └── ReviewResult.cs        # 审查结果模型│   │   ├── Prompts/│   │   │   ├── PromptTemplates.cs     # 提示词模板│   │   │   └── RcifPromptBuilder.cs   # RCIF 提示词构建器│   │   └── Services/│   │       ├── CodeReviewService.cs   # 代码审查服务│   │       ├── ICodeReviewService.cs  # 审查服务接口│   │       └── ReviewCacheService.cs  # 审查缓存服务│   ├── CodeReviewAI.Console/          # 命令行工具│   │   └── Program.cs                 # CLI 入口│   └── CodeReviewAI.VSExtension/      # Visual Studio 扩展│       ├── CodeReviewAIPackage.cs     # VS 扩展主包│       ├── Commands/│       │   ├── ReviewBeforeCommitCommand.cs  # 审查命令│       │   └── ReviewSettingsCommand.cs      # 设置命令│       └── UI/│           ├── ReviewResultWindow.xaml(.cs)  # 审查结果窗口│           └── SettingsWindow.xaml(.cs)      # 设置窗口└── CodeReviewAI.slnx                  # 解决方案文件

配置说明

配置文件位于 config/config.json,格式如下:

{"DefaultModel""doubao","CacheExpirationMinutes"30,"Models": {"doubao": {"PromptPrefix""你是一名资深C#代码审查专家...","ApiUrl""https://ark.cn-beijing.volces.com/api/v3","ApiKey""your-doubao-api-key","ModelId""doubao-seed-2-0-code-preview-260215","Temperature"0.7,"TopP"0.9,"MaxTokens"2000    },"qianwen": {"PromptPrefix""你是一名资深C#代码审查专家...","ApiUrl""https://dashscope.aliyuncs.com/compatible-mode/v1","ApiKey""your-qianwen-api-key","ModelId""qwen-plus","Temperature"0.7,"TopP"0.9,"MaxTokens"1000,"StopSequences": [ "\n#" ]    },"openai": {"PromptPrefix""You are a senior C# code reviewer...","ApiUrl""https://api.openai.com/v1","ApiKey""your-openai-api-key","ModelId""gpt-4-turbo","Temperature"0.7,"TopP"0.9,"MaxTokens"2000    },"zhipu": {"PromptPrefix""你是一名资深C#代码审查专家...","ApiUrl""https://open.bigmodel.cn/api/paas/v4","ApiKey""your-zhipu-api-key","ModelId""glm-4","Temperature"0.7,"TopP"0.9,"MaxTokens"2000,"ExtraParameters": {"response_format": { "type""markdown" }      }    }  }}

配置项说明

字段
说明
默认值
DefaultModel
默认使用的模型键名
"doubao"
CacheExpirationMinutes
审查结果缓存过期时间(分钟)
30
Models.<key>.PromptPrefix
模型专属提示词前缀
各模型预设
Models.<key>.ApiUrl
API 端点地址
Models.<key>.ApiKey
API 密钥
Models.<key>.ModelId
模型标识符
Models.<key>.Temperature
生成温度
0.7
Models.<key>.TopP
Top-P 采样参数
0.9
Models.<key>.MaxTokens
最大生成 Token 数
2000
Models.<key>.StopSequences
停止序列
可选
Models.<key>.ExtraParameters
额外参数
可选

命令行用法

基本语法

dotnet exec CodeReviewAI.Console.dll --command <命令> [选项]

选项

选项
说明
默认值
--command
要执行的命令
review
--path
项目/仓库路径
当前目录
--model
使用的模型键名
doubao
--config
配置文件路径
自动查找
--format
输出格式(markdown/json/text
markdown

可用命令

review – AI 代码审查

获取 Git 仓库中的 C# 代码变更,使用 AI 模型进行审查:

dotnet exec CodeReviewAI.Console.dll --command review --path /path/to/repo --model doubao --format markdown

diff – 查看代码变更

仅显示 Git 仓库中的 C# 代码变更,不进行审查:

dotnet exec CodeReviewAI.Console.dll --command diff --path /path/to/repo

commit – 提交到本地仓库

暂存所有变更并提交到本地 Git 仓库:

dotnet exec CodeReviewAI.Console.dll --command commit --path /path/to/repo

push – 提交并推送

暂存、提交并推送到远程仓库:

dotnet exec CodeReviewAI.Console.dll --command push --path /path/to/repo

pull-push – 拉取后提交并推送

先拉取远程更新(rebase),再暂存、提交并推送:

dotnet exec CodeReviewAI.Console.dll --command pull-push --path /path/to/repo

list-models – 列出可用模型

显示配置文件中所有可用的 AI 模型:

dotnet exec CodeReviewAI.Console.dll --command list-models --format json

test-connection – 测试模型连接

测试指定 AI 模型的 API 连接是否正常:

dotnet exec CodeReviewAI.Console.dll --commandtest-connection --model doubao

hook-init – 安装 Pre-commit Hook

在 Git 仓库中安装 CodeReviewAI 的 pre-commit 钩子:

dotnet exec CodeReviewAI.Console.dll --command hook-init --path /path/to/repo

安装后,每次执行 git commit 时会自动触发 AI 审查。需要 Visual Studio 扩展处于运行状态来响应审查请求。

hook-uninstall – 卸载 Pre-commit Hook

卸载 CodeReviewAI 的 pre-commit 钩子并恢复原有钩子:

dotnet exec CodeReviewAI.Console.dll --command hook-uninstall --path /path/to/repo

Visual Studio 扩展用法

安装

  1. 构建 CodeReviewAI.VSExtension 项目生成 .vsix 文件
  2. 双击 .vsix 文件或在 Visual Studio 的「扩展」→「管理扩展」中安装
  3. 重启 Visual Studio

使用审查功能

  1. 打开一个包含 Git 仓库的解决方案
  2. 修改 C# 代码文件
  3. 通过菜单或快捷键触发「Review Before Commit」命令
  4. 在弹出的审查窗口中:
    • 左侧面板
      :显示修改的代码(绿色高亮变更行)
    • 右侧面板
      :显示 AI 改进建议(Markdown 渲染)
    • 模型选择器
      :切换不同的 AI 模型
    • 刷新审查
      :重新执行审查
    • 提交本地暂存
      :审查通过后提交到本地
    • 推送
      :提交并推送到远程
    • 拉取然后推送
      :先 pull rebase,再提交推送
    • 取消
      :放弃提交

使用设置功能

通过菜单触发「Review Settings」命令,在设置窗口中可以:

  • 选择默认模型
  • 查看配置文件路径
  • 修改缓存过期时间
  • 配置各模型的 API 密钥(OpenAI、豆包、千问、智谱)

Pre-commit Hook 自动审查

当 Visual Studio 打开解决方案时,扩展会自动安装 pre-commit 钩子。此时执行 git commit 的流程为:

  1. Git 触发 pre-commit 钩子
  2. 钩子写入信号文件 codereviewai-request
  3. VS 扩展检测到信号,弹出审查窗口
  4. 用户确认提交 → 写入 APPROVED,提交继续
  5. 用户取消 → 写入 REJECTED,提交被阻止
  6. 超时(30秒)→ 自动放行提交

关闭解决方案时,扩展会自动卸载钩子并清理信号文件。

审查输出格式

审查结果遵循标准 Markdown 结构:

# 代码审查结果## 问题列表### 1. [问题标题] [高优先级/建议]**位置**:文件名.cs 第N行**原始代码**```csharp// original code
  • 改进建议
// improved code
  • 解释
    :[explanation]
  • 参考文献
    :[reference link]
若代码没有问题,则返回:```markdown# 代码审查结果未发现问题,代码质量良好。

技术栈

  • .NET 8
     – 运行时框架
  • LibGit2Sharp
     – Git 仓库操作
  • Microsoft.Extensions.AI
     – AI 模型抽象层
  • OpenAI .NET SDK
     – OpenAI 兼容 API 客户端
  • Microsoft.Extensions.Caching.Memory
     – 内存缓存
  • Microsoft.VisualStudio.Shell
     – Visual Studio 扩展开发
  • WPF
     – 扩展 UI 界面

架构设计

适配器模式

所有 AI 模型通过 IModelAdapter 接口统一抽象,由 ModelAdapterFactory 管理适配器实例。新增模型只需:

  1. 实现 IModelAdapter 接口
  2. 在 ModelAdapterFactory 中注册
  3. 在 config.json 中添加模型配置

RCIF 提示词框架

使用 Role-Context-Instruction-Format 四段式结构化提示词:

  • Role
    :定义 AI 角色(如资深 C# 审查专家)
  • Context
    :提供代码上下文(变更代码 + 文件路径)
  • Instruction
    :审查指令(问题定位 → 建议生成 → 优先级标注)
  • Format
    :输出格式约束(标准 Markdown 结构)

信号文件通信

VS 扩展与 Git Hook 之间通过文件系统信号通信:

codereviewai-active    → 标记扩展已激活codereviewai-request   → Hook 请求审查codereviewai-response  → 扩展返回审查结果(APPROVED/REJECTED)

开发与构建

前置条件

  • Visual Studio 2022(含 VS SDK 工作负载)
  • .NET 8 SDK

构建

dotnet build CodeReviewAI.slnx

构建 VS 扩展

dotnet build src/CodeReviewAI.VSExtension/CodeReviewAI.VSExtension.csproj

生成的 .vsix 文件位于 bin/ 目录下。

开源地址: https://gitee.com/dyx88168/AICodeReview