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


功能特性
多模型支持
支持 4 种 AI 大模型,可自由切换:
|
|
|
|
|
|---|---|---|---|
|
|
DoubaoAdapter |
doubao-seed-2-0-code-preview-260215 |
|
|
|
QianwenAdapter |
qwen-plus |
|
|
|
OpenAIAdapter |
gpt-4-turbo |
|
|
|
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 |
|
|
Models.<key>.ApiKey |
|
|
Models.<key>.ModelId |
|
|
Models.<key>.Temperature |
|
0.7 |
Models.<key>.TopP |
|
0.9 |
Models.<key>.MaxTokens |
|
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 扩展用法
安装
-
构建 CodeReviewAI.VSExtension项目生成.vsix文件 -
双击 .vsix文件或在 Visual Studio 的「扩展」→「管理扩展」中安装 -
重启 Visual Studio
使用审查功能
-
打开一个包含 Git 仓库的解决方案 -
修改 C# 代码文件 -
通过菜单或快捷键触发「Review Before Commit」命令 -
在弹出的审查窗口中: - 左侧面板
:显示修改的代码(绿色高亮变更行) - 右侧面板
:显示 AI 改进建议(Markdown 渲染) - 模型选择器
:切换不同的 AI 模型 - 刷新审查
:重新执行审查 - 提交本地暂存
:审查通过后提交到本地 - 推送
:提交并推送到远程 - 拉取然后推送
:先 pull rebase,再提交推送 - 取消
:放弃提交
使用设置功能
通过菜单触发「Review Settings」命令,在设置窗口中可以:
-
选择默认模型 -
查看配置文件路径 -
修改缓存过期时间 -
配置各模型的 API 密钥(OpenAI、豆包、千问、智谱)
Pre-commit Hook 自动审查
当 Visual Studio 打开解决方案时,扩展会自动安装 pre-commit 钩子。此时执行 git commit 的流程为:
-
Git 触发 pre-commit 钩子 -
钩子写入信号文件 codereviewai-request -
VS 扩展检测到信号,弹出审查窗口 -
用户确认提交 → 写入 APPROVED,提交继续 -
用户取消 → 写入 REJECTED,提交被阻止 -
超时(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 管理适配器实例。新增模型只需:
-
实现 IModelAdapter接口 -
在 ModelAdapterFactory中注册 -
在 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/ 目录下。
夜雨聆风