AICodeReview 代码审查

全能 AI 聚合平台 免费

一站式接入主流 AI 大模型,支持对话 · 生图 · 生视频,即开即用

ChatGPT Claude Gemini Grok DeepSeek 通义千问 Ollama
AI对话 AI生图 AI视频
免费使用 →

CodeReviewAI

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

AICodeReview 代码审查

功能特性

多模型支持

支持 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": [ " #" ]
},
"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.

模型专属提示词前缀

各模型预设

Models.

API 端点地址

Models.

API 密钥

Models.

模型标识符

Models.

生成温度

0.7
Models.

Top-P 采样参数

0.9
Models.

最大生成 Token 数

2000
Models.

停止序列

可选

Models.

额外参数

可选

命令行用法

基本语法

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. [问题标题] [高优先级/提议]

- **位置**:文件名.csN
- **原始代码**:
```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

© 版权声明

相关文章

1 条评论

none
暂无评论...