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


功能特性多模型支持
支持 4 种 AI 大模型,可自由切换:
模型
适配器
默认模型 ID
特点
豆包 (Doubao)
DoubaoAdapter
doubao-seed-2-0-code-preview-
专注中文技术栈,代码质量与性能优化
千问 (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": ,
"ApiUrl": "https://ark.cn-beijing.volces.com/api/v3",
"ApiKey": "your-doubao-api-key",
"Temperature": 0.7,
"TopP": 0.9,
"MaxTokens": 2000
},
"qianwen": {
"PromptPrefix": ,
"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": [ "
#”]
},
“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”: ,
“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. .PromptPrefix模型专属提示词前缀
各模型预设
Models. .ApiUrlAPI 端点地址
-
Models. .ApiKeyAPI 密钥
-
Models. .ModelId模型标识符
-
Models. .Temperature生成温度
0.7 Models. .TopPTop-P 采样参数
0.9 Models. .MaxTokens最大生成 Token 数
2000 Models. .StopSequences停止序列
可选
Models. .ExtraParameters额外参数
可选
选项
选项
说明
默认值
–command要执行的命令
review –path项目/仓库路径
当前目录
–model使用的模型键名
doubao –config配置文件路径
自动查找
–format输出格式(markdown/json/text)
markdown获取 Git 仓库中的 C# 代码变更,使用 AI 模型进行审查:
dotnet execCodeReviewAI.Console.dll –commandreview –path /path/to/repo –model doubao –format markdown
diff- 查看代码变更
仅显示 Git 仓库中的 C# 代码变更,不进行审查:
dotnet execCodeReviewAI.Console.dll –commanddiff –path /path/to/repo
commit- 提交到本地仓库
暂存所有变更并提交到本地 Git 仓库:
dotnet execCodeReviewAI.Console.dll –commandcommit –path /path/to/repo
push- 提交并推送
暂存、提交并推送到远程仓库:
dotnet execCodeReviewAI.Console.dll –commandpush –path /path/to/repo
pull-push- 拉取后提交并推送
先拉取远程更新(rebase),再暂存、提交并推送:
dotnet execCodeReviewAI.Console.dll –commandpull-push –path /path/to/repo
list-models- 列出可用模型
显示配置文件中所有可用的 AI 模型:
dotnet execCodeReviewAI.Console.dll –commandlist-models –format json
test-connection- 测试模型连接
测试指定 AI 模型的 API 连接是否正常:
dotnet execCodeReviewAI.Console.dll –commandtest-connection –model doubao
hook-init- 安装 Pre-commit Hook
在 Git 仓库中安装 CodeReviewAI 的 pre-commit 钩子:
dotnet execCodeReviewAI.Console.dll –commandhook-init –path /path/to/repo
安装后,每次执行 git commit时会自动触发 AI 审查。需要 Visual Studio 扩展处于运行状态来响应审查请求。
hook-uninstall- 卸载 Pre-commit Hook
卸载 CodeReviewAI 的 pre-commit 钩子并恢复原有钩子:
dotnet execCodeReviewAI.Console.dll –commandhook-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、豆包、千问、智谱)
当 Visual Studio 打开解决方案时,扩展会自动安装 pre-commit 钩子。此时执行 git commit的流程为:
- Git 触发 pre-commit 钩子
- 钩子写入信号文件 codereviewai-request
- VS 扩展检测到信号,弹出审查窗口
- 用户确认提交 → 写入 APPROVED,提交继续
- 用户取消 → 写入 REJECTED,提交被阻止
- 超时(30秒)→ 自动放行提交
关闭解决方案时,扩展会自动卸载钩子并清理信号文件。
审查输出格式
审查结果遵循标准 Markdown 结构:
# 代码审查结果
问题列表
1. [问题标题] [高优先级/建议]
- 位置:文件名.cs 第N行
- 原始代码:
csharp
// original 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中添加模型配置
使用 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
构建 VS 扩展dotnet build src/CodeReviewAI.VSExtension/CodeReviewAI.VSExtension.csproj
生成的 .vsix文件位于 bin/目录下。
开源地址: https://gitee.com/dyx88168/AICodeReview
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/280992.html