coderev-cli 1.0.15 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # coderev-cli
2
2
 
3
- > 多智能体 AI 代码审查工具 — Security / Bug / Quality 三个 Agent 并行审查,带置信度评分。
3
+ > 多智能体 AI 代码审查工具 — Security / Bug / Quality 三个 Agent 并行审查,带置信度评分和自动修复。
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/coderev-cli)](https://www.npmjs.com/package/coderev-cli)
6
6
  [![GitHub Sponsors](https://img.shields.io/github/sponsors/jishuanjimingtian)](https://github.com/sponsors/jishuanjimingtian)
@@ -13,221 +13,444 @@
13
13
 
14
14
  ---
15
15
 
16
+ ## 目录
17
+
18
+ - [项目介绍](#项目介绍)
19
+ - [安装](#安装)
20
+ - [快速上手](#快速上手)
21
+ - [命令详解](#命令详解)
22
+ - [coderev review(核心审查)](#coderev-review核心审查)
23
+ - [coderev fix(自动修复)](#coderev-fix自动修复)
24
+ - [coderev hook(Git Hooks)](#coderev-hookgit-hooks)
25
+ - [coderev stats(统计看板)](#coderev-stats统计看板)
26
+ - [coderev cache(缓存管理)](#coderev-cache缓存管理)
27
+ - [coderev config(配置管理)](#coderev-config配置管理)
28
+ - [coderev init(初始化)](#coderev-init初始化)
29
+ - [配置详解](#配置详解)
30
+ - [平台集成](#平台集成)
31
+ - [CI/CD 集成](#cicd-集成)
32
+ - [FAQ / 常见问题](#faq--常见问题)
33
+
34
+ ---
35
+
36
+ ## 项目介绍
37
+
38
+ **coderev 是什么?**
39
+
40
+ coderev(Code Review 缩写)是一个**多智能体 AI 代码审查 CLI 工具**。你扔给它一段代码 diff,它会并行启动 3 个 AI Agent,从**安全、缺陷、质量**三个维度审查,然后汇总成结构化的审查报告。
41
+
42
+ **为什么要用 coderev?**
43
+
44
+ | 场景 | 不用 coderev | 用 coderev |
45
+ |------|-------------|-----------|
46
+ | 每次提交前 | 凭肉眼检查或忘了检查 | 自动跑三个维度审查 |
47
+ | 审查同事的 PR | 逐行看,容易漏 | AI 先扫一遍,你只看高置信度 issue |
48
+ | 安全审计 | 依赖经验,覆盖不全 | OWASP 级别检查 |
49
+ | 项目代码质量把控 | 看个人标准和心情 | 统一的规则引擎 + 置信度评分 |
50
+
51
+ **适用人群**
52
+ - 独立开发者 — 提交前自动把关,减少 Bug
53
+ - 团队/开源维护者 — PR 接入 AI 初审,提高审查效率
54
+ - CI/CD 流水线 — 集成到 CI,自动拦截高风险代码
55
+
56
+ ---
57
+
16
58
  ## 安装
17
59
 
60
+ ### 全局安装(推荐)
61
+
18
62
  ```bash
19
63
  npm install -g coderev-cli
20
64
  ```
21
65
 
22
- > **Node.js 版本要求:>= 18**
66
+ > **要求 Node.js >= 18**,可使用 `node -v` 检查版本。
67
+
68
+ ### 验证安装
69
+
70
+ ```bash
71
+ coderev --help
72
+ ```
73
+
74
+ 看到命令列表则安装成功。
75
+
76
+ ### 更新
23
77
 
24
78
  ```bash
25
- # 验证版本
26
- node -v
79
+ npm update -g coderev-cli
27
80
  ```
28
81
 
29
82
  ---
30
83
 
31
84
  ## 快速上手
32
85
 
86
+ ### 第 1 步:初始化
87
+
88
+ 在项目目录中执行,生成默认配置:
89
+
33
90
  ```bash
34
- # 1. 初始化项目配置
35
91
  coderev init
92
+ ```
36
93
 
37
- # 2. 设置 API Key(支持 DeepSeek / OpenAI)
38
- # Linux / macOS:
39
- export DEEPSEEK_API_KEY="***"
40
- # Windows PowerShell:
41
- $env:DEEPSEEK_API_KEY="***"
94
+ 会在当前目录创建 `.coderevrc.json` 配置文件。
42
95
 
43
- # 3. 审查暂存区变更
44
- coderev review
96
+ ### 2 步:设置 API Key
45
97
 
46
- # 4. 或传入 git diff
47
- git diff main | coderev review
98
+ coderev 需要调用 AI API 来审查代码。支持 OpenAI 和 DeepSeek。
48
99
 
49
- # 5. 或审查 PR
50
- coderev review --pr owner/repo#42
100
+ ```bash
101
+ # Windows PowerShell
102
+ $env:DEEPSEEK_API_KEY="sk-your-key-here"
103
+
104
+ # Linux / macOS
105
+ export DEEPSEEK_API_KEY="sk-your-key-here"
51
106
  ```
52
107
 
53
- ---
108
+ 也可以写入配置文件(见下方「配置详解」)。
54
109
 
55
- ## 架构
110
+ ### 第 3 步:运行审查
56
111
 
112
+ #### 审查暂存区变更(最常用的方式)
113
+
114
+ ```bash
115
+ git add .
116
+ coderev review
57
117
  ```
58
- 你的代码 (git diff)
59
-
60
- ┌──────┼──────┐
61
- ▼ ▼ ▼
62
- ┌──────┐┌──────┐┌──────┐
63
- │ 🔒 ││ 🐛 ││ 📐 │
64
- │ 安全 ││ 缺陷 ││ 质量 │
65
- │ 审计 ││ 检测 ││ 检查 │
66
- └──┬───┘└──┬───┘└──┬───┘
67
- │ │ │
68
- └───────┼───────┘
69
-
70
- ┌──────────┐
71
- │ 合并 & │
72
- │ 置信度评分 │
73
- │ (0-100) │
74
- └────┬─────┘
75
-
76
- 结构化审查报告
118
+
119
+ #### 审查当前分支的未提交变更
120
+
121
+ ```bash
122
+ coderev review --diff
77
123
  ```
78
124
 
79
- | Agent | 专注领域 |
80
- |-------|---------|
81
- | 🔒 安全审计 | SQL注入、XSS、SSRF、硬编码密钥、认证缺陷 |
82
- | 🐛 缺陷检测 | 空指针、竞态条件、异步问题、逻辑错误 |
83
- | 📐 质量检查 | 代码复杂度、DRY、命名规范、异常处理 |
125
+ #### 审查某个 commit
84
126
 
85
- 每个 issue 附带**置信度评分 (0-100)**,低于阈值(默认 60)自动过滤。多 Agent 发现的重复问题自动合并去重。
127
+ ```bash
128
+ coderev review --commit HEAD~1
129
+ ```
86
130
 
87
- ---
131
+ #### 审查 PR
132
+
133
+ ```bash
134
+ coderev review --pr 42
135
+ ```
88
136
 
89
- ## CLI 命令参考
137
+ ### 4 步:查看报告
90
138
 
91
- ### review
139
+ 审查结果会直接输出在终端。如果开启 HTML 模式,可以生成可视化报告:
92
140
 
93
141
  ```bash
94
- coderev review # Agent 并行审查(默认)
95
- coderev review --min-confidence 80 # 提高阈值,减少误报
96
- coderev review --single # 单 Agent 模式(v0.2 兼容,更省)
97
- coderev review --audit # 安全审计模式(OWASP 级)
98
- coderev review --no-cache # 跳过缓存
99
- coderev review --format json # JSON 输出
100
- coderev review --format html # HTML 报告输出
101
- coderev review --incremental # 只审查 diff 新增/变更行
102
- coderev review --interactive # 交互式逐条修复问题
103
- coderev review --ci # CI 模式(发现问题则 exit code 1)
142
+ coderev review --output html > report.html
143
+ # 浏览器打开 report.html
104
144
  ```
105
145
 
106
- ### interactive 交互式修复
146
+ ---
107
147
 
108
- `--interactive` 模式让你逐一审查每个 issue,选择修复(AI 生成补丁)或跳过:
148
+ ## 命令详解
149
+
150
+ ### coderev review(核心审查)
151
+
152
+ **作用**:审查代码差异并输出审查报告。这是 coderev 最核心的命令。
153
+
154
+ **使用方式**:
109
155
 
110
156
  ```bash
157
+ coderev review [选项]
158
+ ```
159
+
160
+ **默认可选参数**:
161
+
162
+ | 参数 | 说明 | 示例 |
163
+ |------|------|------|
164
+ | `--diff` | 审查当前分支未提交的变更(与最近 commit 对比) | `coderev review --diff` |
165
+ | `--commit <ref>` | 审查指定 commit | `coderev review --commit abc123` |
166
+ | `--staged` | 审查暂存区(默认行为) | `coderev review` |
167
+ | `--single` | 单 Agent 模式(只用 1 个 Agent,省 token,v0.2 兼容) | `coderev review --single` |
168
+ | `--min-confidence <0-100>` | 置信度阈值,低于此值的结果不显示(默认 60) | `coderev review --min-confidence 80` |
169
+ | `--no-cache` | 跳过缓存,强制重新审查 | `coderev review --no-cache` |
170
+ | `--format <format>` | 输出格式:`terminal`(终端) / `json` / `html` / `markdown` | `coderev review --format json` |
171
+ | `--output <type>` | 输出方式:`terminal`(终端)/ `json` / `html` / `markdown` | `coderev review --output html` |
172
+ | `--audit` | 安全审计模式,重点关注安全问题 | `coderev review --audit` |
173
+ | `--incremental` | 增量模式,只审查 diff 中新增和变更的行(忽略删除的行) | `coderev review --incremental` |
174
+ | `--interactive` | 交互式模式,逐条审查 issue 并选择是否修复 | `coderev review --interactive` |
175
+ | `--ci` | CI 模式,发现问题时以非零退出码终止 | `coderev review --ci` |
176
+ | `--pr <value>` | 审查 Pull Request,格式 `owner/repo#number` 或仅 `number`(自动检测仓库) | `coderev review --pr jishuanjimingtian/coderev#42` |
177
+ | `--post` | 审查 PR 后自动回贴评论(需配合 `--pr`) | `coderev review --pr 42 --post` |
178
+ | `--inline` | 审查 PR 后以行内方式回贴评论(需配合 `--pr`) | `coderev review --pr 42 --inline` |
179
+
180
+ **使用示例**:
181
+
182
+ ```bash
183
+ # 最简用法:审查暂存区
184
+ coderev review
185
+
186
+ # 审查某个 PR 并回贴评论
187
+ coderev review --pr jishuanjimingtian/coderev#42 --post
188
+
189
+ # 终端输出 + 高置信度要求(减少误报)
190
+ coderev review --min-confidence 80
191
+
192
+ # CI 中使用,发现问题就报错
193
+ coderev review --ci --min-confidence 70
194
+
195
+ # 生成 HTML 报告
196
+ coderev review --format html > review-report.html
197
+
198
+ # 交互式审查并修复
199
+ coderev review --interactive
200
+
201
+ # 只审查新增的代码(增量模式)
202
+ coderev review --incremental
203
+
204
+ # 通过管道传入 diff(支持任意 diff 输入)
205
+ git diff main | coderev review
206
+ ```
207
+
208
+ #### --interactive 交互式修复详解
209
+
210
+ **作用**:逐条展示每个审查发现的问题,让你决定是否用 AI 生成补丁自动修复。
211
+
212
+ **工作流程**:
213
+
214
+ ```
111
215
  coderev review --interactive
112
- # 输出示例:
113
- # Issue #1 of 3
114
- # ● [high] [error] SQL injection risk in query construction
115
- # File: src/db.js:42
116
- # Suggestion: Use parameterized queries
117
- # [a]pply fix / [s]kip / [q]uit > a
118
216
  ```
119
217
 
120
- ### CI 模式
218
+ 终端会依次展示每个 issue:
121
219
 
122
- `--ci` 模式用于 CI/CD 管道,发现问题时以非零退出码终止:
220
+ ```
221
+ Issue #1 of 3
222
+ ● [high] [error] SQL injection risk in query construction
223
+ File: src/db.js:42
224
+ Suggestion: Use parameterized queries
225
+
226
+ [a]pply fix / [s]kip / [q]uit > a
227
+ ```
228
+
229
+ **交互选项**:
230
+
231
+ | 按键 | 作用 |
232
+ |------|------|
233
+ | `a` | Apply fix — AI 生成补丁并应用到文件 |
234
+ | `s` | Skip — 跳过当前 issue |
235
+ | `q` | Quit — 退出交互模式 |
236
+
237
+ #### --ci CI 模式详解
238
+
239
+ **作用**:专为 CI/CD 管道设计。如果代码中发现任何 issue(且置信度高于阈值),coderev 以非零退出码退出,中断管道执行。
123
240
 
124
241
  ```bash
125
- coderev review --ci --min-confidence 70
126
- coderev review --ci --output json # 结合 JSON 输出用于上游处理
242
+ # 常规使用
243
+ coderev review --ci
244
+
245
+ # 配合高阈值,只拦截确定严重的问题
246
+ coderev review --ci --min-confidence 80
247
+
248
+ # 结合 JSON 输出,供上游 CI 脚本处理
249
+ coderev review --ci --format json
127
250
  ```
128
251
 
129
- ### HTML 报告
252
+ **在 CI 配置中的用法**(例如 GitHub Actions):
253
+
254
+ ```yaml
255
+ - name: coderev check
256
+ run: |
257
+ git fetch origin main
258
+ git diff origin/main...HEAD | coderev review --ci
259
+ ```
260
+
261
+ #### --incremental 增量审查详解
262
+
263
+ **作用**:默认情况下,coderev 会审查整个 diff 的上下文。增量模式下,**只关注新增和修改的行**,忽略被删除的旧代码。适用于:
130
264
 
131
- 生成漂亮的可视化 HTML 报告:
265
+ - 大型代码库重构,不想看大段删除
266
+ - 只想关注"引入的新代码"是否有问题
267
+ - PR 审查时快速聚焦变更内容
268
+
269
+ ```bash
270
+ coderev review --incremental
271
+ ```
272
+
273
+ #### HTML 报告
274
+
275
+ **作用**:生成可视化的 HTML 审查报告,支持深色/浅色模式自动适配,方便分享或归档。
132
276
 
133
277
  ```bash
134
278
  coderev review --output html > report.html
135
- # 支持深色/浅色模式自动适配
136
279
  ```
137
280
 
138
- ### 增量审查
281
+ ---
282
+
283
+ ### coderev fix(自动修复)
139
284
 
140
- 只关注 diff 中新增和修改的行,忽略移除的上下文:
285
+ **作用**:根据审查结果生成补丁文件,或直接应用到代码中。
141
286
 
142
287
  ```bash
143
- coderev review --incremental
288
+ coderev fix --file <diff文件>
144
289
  ```
145
290
 
146
- ### fix
291
+ | 参数 | 说明 | 示例 |
292
+ |------|------|------|
293
+ | `--file <path>` | **必填**,指定包含 diff 的文件路径 | `coderev fix --file changes.diff` |
294
+ | `--apply` | 生成补丁后**直接应用到文件** | `coderev fix --file changes.diff --apply` |
295
+
296
+ **使用示例**:
147
297
 
148
298
  ```bash
149
- coderev fix --file changes.diff # 自动修复建议
150
- coderev fix --file changes.diff --apply # 生成并应用补丁
299
+ # 先生成 diff
300
+ git diff > changes.diff
301
+
302
+ # 审查并生成修复建议(不自动应用)
303
+ coderev fix --file changes.diff
304
+
305
+ # 审查并直接应用补丁
306
+ coderev fix --file changes.diff --apply
151
307
  ```
152
308
 
153
- ### PR 审查
309
+ ---
310
+
311
+ ### coderev hook(Git Hooks)
312
+
313
+ **作用**:安装 Git hooks,让你在 git 操作时自动触发代码审查。支持 pre-commit(提交前)和 pre-push(推送前)。
154
314
 
155
315
  ```bash
156
- coderev review --pr owner/repo#42 # 审查外部 PR
157
- coderev review --pr 42 # 自动检测当前仓库
158
- coderev review --pr owner/repo#42 --post # 审查 + 贴评论
159
- coderev review --pr owner/repo#42 --inline # 行内评论
160
- coderev review --pr owner/repo#42 --format json
316
+ coderev hook install [hook类型] [选项]
161
317
  ```
162
318
 
163
- ### Git Hooks
319
+ | 参数 | 说明 | 示例 |
320
+ |------|------|------|
321
+ | `install` | 安装 hook | `coderev hook install` |
322
+ | `install pre-commit` | 安装 pre-commit hook(提交前审查) | `coderev hook install pre-commit` |
323
+ | `install pre-push` | 安装 pre-push hook(推送前审查) | `coderev hook install pre-push` |
324
+ | `--min-score <number>` | 设置最低置信度阈值 | `coderev hook install pre-commit --min-score 70` |
325
+ | `remove` | 移除已安装的 hook | `coderev hook remove` |
326
+
327
+ **使用示例**:
164
328
 
165
329
  ```bash
166
- coderev hook install # 安装 pre-commit
330
+ # 安装默认 hook(pre-commit
331
+ coderev hook install
332
+
333
+ # 安装 pre-commit,设置置信度 70
167
334
  coderev hook install pre-commit --min-score 70
335
+
336
+ # 安装 pre-push
168
337
  coderev hook install pre-push
338
+
339
+ # 移除所有 hook
340
+ coderev hook remove
169
341
  ```
170
342
 
171
- ### 其他
343
+ **安装后效果**:
344
+ - `git commit` 时 → 自动审查暂存区代码,发现问题会阻止提交
345
+ - `git push` 时 → 自动审查将要推送的变更
346
+
347
+ ---
348
+
349
+ ### coderev stats(统计看板)
350
+
351
+ **作用**:查看代码审查的历史统计,包括审查次数、发现的 issue 数量、类型分布等。
172
352
 
173
353
  ```bash
174
- coderev stats # 统计看板
175
- coderev stats week # 本周统计
176
- coderev cache status # 缓存状态
177
- coderev cache clear # 清空缓存
178
- coderev config show # 查看配置
354
+ coderev stats [周期]
179
355
  ```
180
356
 
181
- ---
357
+ | 参数 | 说明 | 示例 |
358
+ |------|------|------|
359
+ | (无参数) | 查看总体统计数据 | `coderev stats` |
360
+ | `week` | 本周统计 | `coderev stats week` |
361
+ | `month` | 本月统计 | `coderev stats month` |
182
362
 
183
- ## 配置管理
363
+ **输出示例**(实际内容取决于缓存数据):
184
364
 
185
- coderev 支持三种配置方式(优先级从高到低),建议用配置文件,一劳永逸。
365
+ ```
366
+ 📊 coderev 统计
367
+ ═══════════════════
368
+ 总审查次数: 47
369
+ 总发现 issue: 156
370
+ 安全: 23 (14.7%)
371
+ 缺陷: 67 (42.9%)
372
+ 质量: 66 (42.3%)
373
+ ═══════════════════
374
+ ```
375
+
376
+ ---
186
377
 
187
- ### 方式一:全局配置文件
378
+ ### coderev cache(缓存管理)
188
379
 
189
- 在项目根目录创建 `.coderevrc.json`,coderev 会自动从当前目录向父目录逐级查找。也支持 `.coderevrc` 或 `coderev.config.json` 作为文件名。
380
+ **作用**:管理审查结果缓存,避免重复审查相同的代码。
190
381
 
191
382
  ```bash
192
- # 一键生成默认配置
193
- coderev init
383
+ coderev cache <子命令>
194
384
  ```
195
385
 
196
- ### 方式二:环境变量
386
+ | 子命令 | 说明 | 示例 |
387
+ |--------|------|------|
388
+ | `status` | 查看缓存状态(缓存条目数、过期时间) | `coderev cache status` |
389
+ | `clear` | 清空所有缓存 | `coderev cache clear` |
197
390
 
198
- 适用于临时测试或 CI 环境:
199
- ```bash
200
- # Linux / macOS
201
- export DEEPSEEK_API_KEY="sk-xxx"
202
- export OPENAI_API_KEY="sk-xxx"
391
+ **缓存机制**:
392
+ - 基于代码 diff 的 SHA256 哈希值
393
+ - 缓存有效期 24 小时
394
+ - 同段代码反复审查时直接返回缓存结果,节省 API 调用
203
395
 
204
- # Windows PowerShell
205
- $env:DEEPSEEK_API_KEY="sk-xxx"
396
+ ---
397
+
398
+ ### coderev config(配置管理)
399
+
400
+ **作用**:查看或管理当前配置。
401
+
402
+ ```bash
403
+ coderev config <子命令>
206
404
  ```
207
405
 
208
- 默认读取 `OPENAI_API_KEY`,如需改用 `DEEPSEEK_API_KEY`,在配置文件中设置:
209
- ```json
210
- {
211
- "ai": {
212
- "apiKeyEnv": "DEEPSEEK_API_KEY"
213
- }
214
- }
406
+ | 子命令 | 说明 | 示例 |
407
+ |--------|------|------|
408
+ | `show` | 显示当前生效的完整配置 | `coderev config show` |
409
+
410
+ ---
411
+
412
+ ### coderev init(初始化)
413
+
414
+ **作用**:在当前项目目录生成 `.coderevrc.json` 配置文件。
415
+
416
+ ```bash
417
+ coderev init
215
418
  ```
216
419
 
217
- ### 方式三:配置文件内直接写 Key
420
+ 生成的文件内容:
218
421
 
219
422
  ```json
220
423
  {
221
424
  "ai": {
222
- "apiKey": "sk-xxx"
425
+ "provider": "deepseek",
426
+ "temperature": 0.3,
427
+ "maxTokens": 4096
428
+ },
429
+ "rules": {
430
+ "maxLineLength": 100,
431
+ "predefined": ["security", "performance", "style"]
223
432
  }
224
433
  }
225
434
  ```
226
- > ⚠️ 注意:不要在公开仓库中提交含 Key 的配置文件,建议配合 `.gitignore` 或使用环境变量。
435
+
436
+ 如果项目已有配置文件,执行 `coderev init` 会提示是否覆盖。
227
437
 
228
438
  ---
229
439
 
230
- ### 完整配置项说明
440
+ ## 配置详解
441
+
442
+ ### 配置加载顺序
443
+
444
+ coderev 按以下优先级加载配置(高的优先):
445
+
446
+ 1. **CLI 参数**(命令行传入)
447
+ 2. **配置文件**(`.coderevrc.json` / `.coderevrc` / `coderev.config.json`)
448
+ 3. **环境变量**(环境变量中设置的 API Key)
449
+ 4. **默认值**
450
+
451
+ 配置文件会自动从**当前目录向父目录逐级查找**,找到第一个便停止。
452
+
453
+ ### 完整配置项参考
231
454
 
232
455
  ```json
233
456
  {
@@ -244,14 +467,7 @@ $env:DEEPSEEK_API_KEY="sk-xxx"
244
467
  "maxLineLength": 100,
245
468
  "predefined": ["security", "performance", "style"],
246
469
  "autoLanguage": true,
247
- "custom": [
248
- {
249
- "name": "no-console-log",
250
- "severity": "warning",
251
- "message": "避免在生产代码中使用 console.log",
252
- "filePattern": "src/**/*.js"
253
- }
254
- ]
470
+ "custom": []
255
471
  },
256
472
  "output": {
257
473
  "format": "terminal",
@@ -260,53 +476,90 @@ $env:DEEPSEEK_API_KEY="sk-xxx"
260
476
  }
261
477
  ```
262
478
 
479
+ #### ai(AI 配置)
480
+
263
481
  | 字段 | 类型 | 默认值 | 说明 |
264
482
  |------|------|--------|------|
265
- | `ai.provider` | string | `"openai"` | AI 提供商,支持 `"openai"` / `"deepseek"` |
266
- | `ai.model` | string | 取决于 provider | 模型名称(openai 默认 `gpt-4o`,deepseek 默认 `deepseek-chat`)|
267
- | `ai.temperature` | number | `0.3` | 生成温度,越低越确定(0-1 |
268
- | `ai.maxTokens` | number | `4096` | 每次请求最大 token 数 |
269
- | `ai.apiKey` | string | `""` | 直接在配置文件中写入 API Key |
270
- | `ai.apiKeyEnv` | string | `"OPENAI_API_KEY"` | 从环境变量读取 Key 的变量名 |
271
- | `ai.baseURL` | string | `""` | 自定义 API 地址(兼容 OpenAI 协议的任意服务) |
272
- | `rules.maxLineLength` | number | `100` | 最大行长度检查 |
273
- | `rules.predefined` | string[] | `["security","performance","style"]` | 启用的预定义规则集 |
274
- | `rules.autoLanguage` | boolean | `true` | 是否自动检测 diff 语言并追加专项规则 |
275
- | `rules.custom` | object[] | `[]` | 自定义规则数组 |
276
- | `output.format` | string | `"terminal"` | 输出格式:`"terminal"` / `"markdown"` / `"json"` |
277
- | `output.includeScore` | boolean | `true` | 是否显示评分 |
278
-
279
- ### 支持的 Provider
483
+ | `provider` | string | `"openai"` | AI 提供商,支持 `"openai"` / `"deepseek"` |
484
+ | `model` | string | 取决于 provider | 模型名称 |
485
+ | `temperature` | number | `0.3` | 生成温度(0-1),越低越确定越保守 |
486
+ | `maxTokens` | number | `4096` | 每次请求最大输出 token 数 |
487
+ | `apiKey` | string | `""` | 直接在配置文件中写入 API Key |
488
+ | `apiKeyEnv` | string | `"OPENAI_API_KEY"` | 读取环境变量中的 API Key |
489
+ | `baseURL` | string | `""` | 自定义 API 地址,兼容 OpenAI 协议的任何服务 |
490
+
491
+ **支持的 Provider 默认值**:
280
492
 
281
493
  | provider | 默认模型 | 默认 API 地址 |
282
494
  |----------|---------|--------------|
283
495
  | `openai` | `gpt-4o` | `https://api.openai.com` |
284
496
  | `deepseek` | `deepseek-chat` | `https://api.deepseek.com` |
285
497
 
286
- 通过 `ai.baseURL` 可对接任何兼容 OpenAI 协议的 API 服务(如 Azure OpenAI、本地 LLM 等)。
498
+ **对接任意兼容 OpenAI API 的服务**(如 Azure OpenAI、本地 LLM):
287
499
 
288
- ---
500
+ ```json
501
+ {
502
+ "ai": {
503
+ "provider": "openai",
504
+ "baseURL": "https://your-custom-endpoint.com/v1",
505
+ "apiKey": "sk-your-key"
506
+ }
507
+ }
508
+ ```
289
509
 
290
- ### 预定义规则集
510
+ #### rules(规则引擎配置)
291
511
 
292
- `rules.predefined` 数组中可以启用以下规则集:
512
+ | 字段 | 类型 | 默认值 | 说明 |
513
+ |------|------|--------|------|
514
+ | `maxLineLength` | number | `100` | 最大行长度检查,超过会警告 |
515
+ | `predefined` | string[] | `["security","performance","style"]` | 启用的预定义规则集 |
516
+ | `autoLanguage` | boolean | `true` | 是否自动检测 diff 语言并追加专项规则 |
517
+ | `custom` | object[] | `[]` | 自定义规则数组 |
293
518
 
294
- | 名称 | 说明 |
295
- |------|------|
296
- | `security` | 安全检查:注入、XSS、认证缺陷、密钥泄露 |
297
- | `performance` | 性能检查:不必要的循环、内存泄漏、N+1 查询 |
298
- | `style` | 代码风格:空格、import、未使用变量 |
299
- | `typescript` | TypeScript 最佳实践(strict 模式、泛型、类型断言) |
300
- | `react` | React 最佳实践(hooks 规则、key props、组件命名) |
301
- | `node` | Node.js 最佳实践(错误处理、async 模式、文件安全) |
302
- | `naming` | 命名规范(camelCase、PascalCase、常量大写) |
303
- | `testing` | 测试质量(断言覆盖、边界情况、测试隔离) |
519
+ **预定义规则集一览**:
304
520
 
305
- ---
521
+ 通过配置 `rules.predefined` 数组,可以自由组合启用以下规则集:
306
522
 
307
- ### 自定义规则
523
+ | 名称 | 检查重点 |
524
+ |------|---------|
525
+ | `security` | SQL/NoSQL 注入、XSS、SSRF、CSRF、硬编码密钥、认证缺陷、授权缺失 |
526
+ | `performance` | 不必要的循环、大对象未释放、N+1 查询、内存泄漏、冗余计算 |
527
+ | `style` | 空格/缩进不统一、未使用的 import/变量、分号规范、命名约定 |
528
+ | `typescript` | 非严格模式、滥用 any、泛型使用不当、类型断言滥用、枚举误用 |
529
+ | `react` | hooks 规则违反、缺少 key props、函数组件命名、副作用清理 |
530
+ | `node` | 未捕获异常、异步回调链、文件 I/O 未关闭、路径遍历 |
531
+ | `naming` | 驼峰 vs 帕斯卡命名规范、常量大写、函数命名动词化 |
532
+ | `testing` | 断言覆盖不足、边界条件缺失、测试间耦合、输出不明确 |
533
+
534
+ **启用示例**:
535
+
536
+ ```json
537
+ {
538
+ "rules": {
539
+ "predefined": ["security", "typescript", "react", "naming", "testing"]
540
+ }
541
+ }
542
+ ```
543
+
544
+ #### rules.autoLanguage 自动语言检测
545
+
546
+ coderev 会自动检查 diff 中文件的扩展名,追加对应的语言专项规则:
547
+
548
+ | 语言 | 扩展名 | 检查重点 |
549
+ |------|--------|---------|
550
+ | JavaScript | `.js`, `.jsx`, `.mjs` | async/await 链、== vs ===、内存泄漏、循环依赖 |
551
+ | TypeScript | `.ts`, `.tsx` | strict 模式、禁止 any、泛型约束、类型断言 |
552
+ | Python | `.py` | PEP 8 规范、异常类型指定、mutable 默认参数、async 用法 |
553
+ | Rust | `.rs` | unsafe 块审计、unwrap/expect 滥用、ownership 问题 |
554
+ | Go | `.go` | error 忽略、goroutine 泄漏、context 传播、data race |
555
+ | Java | `.java` | null 处理、checked exception、== vs .equals()、线程安全 |
556
+ | SQL | `.sql` | 注入防护、N+1 查询、索引缺失、大 IN-clause |
308
557
 
309
- `rules.custom` 中定义专属规则:
558
+ 可通过 `rules.autoLanguage: false` 关闭此功能。
559
+
560
+ #### rules.custom 自定义规则
561
+
562
+ **作用**:针对团队或项目的特定规范,编写专属审查规则。
310
563
 
311
564
  ```json
312
565
  {
@@ -322,41 +575,38 @@ $env:DEEPSEEK_API_KEY="sk-xxx"
322
575
  "severity": "error",
323
576
  "message": "React 组件必须包裹 ErrorBoundary",
324
577
  "filePattern": "src/components/**/*.jsx"
578
+ },
579
+ {
580
+ "name": "single-quote-string",
581
+ "severity": "warning",
582
+ "message": "请使用单引号",
583
+ "filePattern": "src/**/*.ts"
325
584
  }
326
585
  ]
327
586
  }
328
587
  }
329
588
  ```
330
589
 
331
- | 字段 | 说明 |
332
- |------|------|
333
- | `name` | 规则名称 |
334
- | `severity` | 严重级别:`"error"` / `"warning"` / `"info"` |
335
- | `message` | 审查时的提示文字 |
336
- | `filePattern` | 可选,限定生效的文件 glob 模式 |
337
- | `enabled` | 可选,设为 `false` 可临时禁用 |
338
-
339
- ---
340
-
341
- ### 语言专项规则
590
+ | 字段 | 必填 | 类型 | 说明 |
591
+ |------|------|------|------|
592
+ | `name` | ✅ | string | 规则名称 |
593
+ | `severity` | ✅ | string | `"error"` / `"warning"` / `"info"` |
594
+ | `message` | | string | 审查时显示的提示文字 |
595
+ | `filePattern` | ❌ | string | 可选,限定生效的文件 glob 模式,如 `src/**/*.ts` |
596
+ | `enabled` | ❌ | boolean | 可选,设为 `false` 可临时禁用此规则 |
342
597
 
343
- coderev 自动从 diff 文件扩展名检测语言,追加专项检查(可通过 `rules.autoLanguage: false` 关闭):
598
+ #### output(输出配置)
344
599
 
345
- | 语言 | 检查重点 |
346
- |------|---------|
347
- | JavaScript | async/await 链、== vs ===、内存泄漏、import 循环依赖 |
348
- | TypeScript | strict 模式、避免 any、泛型、类型断言 |
349
- | Python | PEP 8、except 类型、mutable 默认参数、async 用法 |
350
- | Rust | unsafe 审计、unwrap/expect、生命周期、ownership |
351
- | Go | error handling、goroutine 安全、context 传播、data race |
352
- | Java | null 处理、checked exception、== vs .equals()、线程安全 |
353
- | SQL | 注入防护、N+1 查询、索引缺失、大 IN-clause |
600
+ | 字段 | 类型 | 默认值 | 说明 |
601
+ |------|------|--------|------|
602
+ | `format` | string | `"terminal"` | 输出格式:`"terminal"` / `"json"` / `"html"` / `"markdown"` |
603
+ | `includeScore` | boolean | `true` | 是否显示置信度评分 |
354
604
 
355
- ---
605
+ ### .coderevignore 忽略文件
356
606
 
357
- ### .coderevignore:忽略文件
607
+ **作用**:指定 coderev 审查时跳过哪些文件或目录。
358
608
 
359
- 不想被审查的文件,在 `.coderevignore` 中列出(glob 模式):
609
+ 在项目根目录创建 `.coderevignore` 文件,语法同 `.gitignore`(glob 模式):
360
610
 
361
611
  ```
362
612
  # coderev ignore list
@@ -369,11 +619,11 @@ dist/
369
619
  build/
370
620
  ```
371
621
 
372
- ---
622
+ ### .coderevhint 项目上下文
373
623
 
374
- ### .coderevhint:项目上下文
624
+ **作用**:给 AI 审查引擎提供项目背景,让它更准确理解你的代码。
375
625
 
376
- AI 审查提供项目背景,让它更懂你的代码:
626
+ 在项目根目录创建 `.coderevhint` 文件:
377
627
 
378
628
  ```
379
629
  # 项目概况
@@ -386,56 +636,129 @@ build/
386
636
  - Avoid: any 类型、使用 any 断言
387
637
  ```
388
638
 
389
- 兼容 `CLAUDE.md` 格式,两者可共存。
639
+ 也兼容 `CLAUDE.md` 格式,两者可共存。
390
640
 
391
- ---
641
+ ### API Key 配置方式对比
392
642
 
393
- ## 支持的 Git 平台
643
+ | 方式 | 安全性 | 适用场景 | 配置方法 |
644
+ |------|--------|---------|---------|
645
+ | 环境变量 | ✅ 最安全(不落盘) | 本地开发、CI 环境 | `$env:OPENAI_API_KEY="..."` |
646
+ | 配置文件直接写 | ⚠️ 注意.gitignore | 本地个人使用 | `"apiKey": "..."` |
647
+ | 配置文件引用 env | ✅ 安全 + 方便 | 推荐方式 | `"apiKeyEnv": "DEEPSEEK_API_KEY"` |
394
648
 
395
- | 平台 | PR 审查 | 评论回贴 |
396
- |------|---------|---------|
397
- | GitHub | ✅ | ✅ 行内 / 摘要 |
398
- | GitLab | ✅ | ✅ |
399
- | Gitee | ✅ | ✅ |
400
- | Bitbucket | ✅ | ✅ |
649
+ > **推荐做法**:环境变量 + `apiKeyEnv`。既不在代码中暴露 key,又无需每次都手动设置。
401
650
 
402
651
  ---
403
652
 
404
- ## 缓存
653
+ ## 平台集成
654
+
655
+ ### 支持的 Git 平台
656
+
657
+ coderev 支持四大平台,均支持 PR 审查和评论回贴:
658
+
659
+ | 平台 | PR 审查 | 摘要评论 | 行内评论 | 自动检测 |
660
+ |------|:-------:|:--------:|:--------:|:--------:|
661
+ | GitHub | ✅ | ✅ | ✅ | ✅ |
662
+ | GitLab | ✅ | ✅ | ✅ | ✅ |
663
+ | Gitee | ✅ | ✅ | ❌ | ❌ 需完整格式 |
664
+ | Bitbucket | ✅ | ✅ | ❌ | ❌ 需完整格式 |
665
+
666
+ **使用方式**:
667
+
668
+ ```bash
669
+ # GitHub — 自动检测当前仓库
670
+ coderev review --pr 42
671
+
672
+ # 指定仓库(其他平台或跨平台)
673
+ coderev review --pr owner/repo#42
405
674
 
406
- - SHA256 摘要哈希
407
- - 24 小时 TTL
408
- - `coderev cache status` / `coderev cache clear`
675
+ # 审查 + 回贴评论
676
+ coderev review --pr 42 --post
677
+
678
+ # 审查 + 行内评论(仅 GitHub/GitLab)
679
+ coderev review --pr 42 --inline
680
+ ```
409
681
 
410
682
  ---
411
683
 
412
- ## CI / GitHub Actions
684
+ ## CI/CD 集成
685
+
686
+ ### GitHub Actions
413
687
 
414
- 内置工作流文件 `.github/workflows/coderev-review.yml`,PR 自动审查。
688
+ 项目初始化时自动生成 `.github/workflows/coderev-review.yml`,在 PR 创建或更新时自动触发代码审查。
689
+
690
+ **工作流说明**:
691
+ - 触发条件:PR 打开、同步、重新打开
692
+ - 执行内容:对比 PR 的 diff → coderev 审查 → 结果回贴到 PR 评论
693
+ - 效果:每个 PR 自动获得一份 AI 审查报告
694
+
695
+ ### 自定义 CI 集成
696
+
697
+ 在任意 CI 管道中:
698
+
699
+ ```bash
700
+ # 对比当前分支与 main
701
+ git fetch origin main
702
+ git diff origin/main...HEAD | coderev review --ci --min-confidence 70
703
+ ```
704
+
705
+ 如果代码存在高置信度问题,管道会以非零退出码中断,阻止合并。
415
706
 
416
707
  ---
417
708
 
418
- ## 项目结构
419
-
420
- ```
421
- coderev/
422
- ├── src/
423
- │ ├── cli.js # CLI 入口
424
- │ ├── reviewer.js # 多 Agent 审查核心
425
- │ ├── config.js # 配置加载
426
- │ ├── github.js # GitHub API
427
- │ ├── gitlab.js # GitLab API
428
- │ ├── gitee.js # Gitee API
429
- │ ├── bitbucket.js # Bitbucket API
430
- │ ├── cache.js # 缓存系统
431
- │ ├── rules.js # 规则引擎
432
- │ ├── stats.js # 统计看板
433
- │ └── coderev.test.js # 20 个单元测试
434
- ├── .github/workflows/
435
- ├── .coderevrc.json
436
- ├── .coderevignore
437
- └── .coderevhint
709
+ ## 架构
710
+
438
711
  ```
712
+ 你的代码 (git diff / PR)
713
+
714
+ ┌──────┼──────┐
715
+ ▼ ▼ ▼
716
+ ┌──────┐┌──────┐┌──────┐
717
+ │ 🔒 ││ 🐛 ││ 📐 │
718
+ │ 安全 ││ 缺陷 ││ 质量 │
719
+ │ 审计 ││ 检测 ││ 检查 │
720
+ └──┬───┘└──┬───┘└──┬───┘
721
+ │ │ │
722
+ └───────┼───────┘
723
+
724
+ ┌──────────┐
725
+ │ 合并 & │
726
+ │ 置信度评分 │
727
+ │ (0-100) │
728
+ └────┬─────┘
729
+
730
+ 结构化审查报告
731
+ ```
732
+
733
+ | Agent | 专注领域 |
734
+ |-------|---------|
735
+ | 🔒 安全审计 | SQL注入、XSS、SSRF、硬编码密钥、认证缺陷 |
736
+ | 🐛 缺陷检测 | 空指针、竞态条件、异步问题、逻辑错误 |
737
+ | 📐 质量检查 | 代码复杂度、DRY、命名规范、异常处理 |
738
+
739
+ 每个 issue 附带**置信度评分 (0-100)**,低于阈值(默认 60)自动过滤。多 Agent 发现的重复问题自动合并去重。
740
+
741
+ ---
742
+
743
+ ## FAQ / 常见问题
744
+
745
+ ### Q:为什么审查结果为空?
746
+ A:可能是代码本身没有问题,也可能是置信度低于阈值。可以尝试 `coderev review --min-confidence 0` 查看所有结果。
747
+
748
+ ### Q:怎么换 API Key?
749
+ A:重新设置环境变量即可,或在 `.coderevrc.json` 中修改 `ai.apiKey` / `ai.apiKeyEnv`。
750
+
751
+ ### Q:不想用 DeepSeek,想用其他 AI?
752
+ A:改成 `provider: "openai"`,再设置 `apiKeyEnv: "OPENAI_API_KEY"`。如果用的是兼容 OpenAI 协议的自定义 API,设置 `baseURL` 即可。
753
+
754
+ ### Q:coderev 会泄漏我的代码吗?
755
+ A:代码通过你的 API Key 发送到 AI 服务商。coderev 本身不会存储或转发你的代码。本地缓存仅存储在你自己机器上。
756
+
757
+ ### Q:缓存能关掉吗?
758
+ A:可以,审查时加 `--no-cache` 参数即可跳过缓存。
759
+
760
+ ### Q:怎么给 coderev 加自己的规则?
761
+ A:在 `.coderevrc.json` 的 `rules.custom` 数组中添加。详见上方「自定义规则」章节。
439
762
 
440
763
  ---
441
764