smart-review 1.0.1 → 1.0.3
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.en-US.md +580 -0
- package/README.md +93 -54
- package/bin/install.js +419 -280
- package/bin/review.js +42 -47
- package/index.js +0 -1
- package/lib/ai-client-pool.js +63 -25
- package/lib/ai-client.js +262 -415
- package/lib/config-loader.js +35 -7
- package/lib/default-config.js +42 -32
- package/lib/reviewer.js +289 -97
- package/lib/segmented-analyzer.js +102 -126
- package/lib/utils/git-diff-parser.js +9 -8
- package/lib/utils/i18n.js +980 -0
- package/package.json +2 -10
- package/templates/rules/en-US/best-practices.js +123 -0
- package/templates/rules/en-US/performance.js +136 -0
- package/templates/rules/en-US/security.js +345 -0
- package/templates/rules/zh-CN/best-practices.js +123 -0
- package/templates/rules/zh-CN/performance.js +136 -0
- package/templates/rules/zh-CN/security.js +345 -0
- package/templates/smart-review.json +5 -2
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Smart Review
|
|
2
2
|
|
|
3
|
+
> 语言 / Language: [中文](README.md) | [English](README.en-US.md)
|
|
4
|
+
|
|
3
5
|
🚀 **AI智能代码审查工具** - 结合静态规则检测和AI智能分析,为你的代码提供全方位的安全和质量审查。
|
|
4
6
|
|
|
5
7
|
## ✨ 特性
|
|
@@ -441,36 +443,45 @@ Smart Reviewer 采用智能分批处理技术,能够高效处理超大文件
|
|
|
441
443
|
```json
|
|
442
444
|
{
|
|
443
445
|
"ai": {
|
|
444
|
-
"maxRequestTokens": 8000, // 单次请求最大token数
|
|
445
|
-
"
|
|
446
|
-
"
|
|
446
|
+
"maxRequestTokens": 8000, // 单次请求最大 token 数
|
|
447
|
+
"chunkOverlapLines": 5, // 分段重叠行数
|
|
448
|
+
"minFilesPerBatch": 1, // 每批次最少文件数
|
|
449
|
+
"maxFilesPerBatch": 10 // 每批次最多文件数
|
|
447
450
|
}
|
|
448
451
|
}
|
|
449
452
|
```
|
|
450
453
|
|
|
451
454
|
#### 性能优化建议
|
|
452
455
|
|
|
453
|
-
1.
|
|
456
|
+
1. **合理设置批处理参数**
|
|
454
457
|
```json
|
|
455
458
|
{
|
|
456
|
-
"
|
|
457
|
-
|
|
459
|
+
"ai": {
|
|
460
|
+
"maxRequestTokens": 6000,
|
|
461
|
+
"chunkOverlapLines": 10,
|
|
462
|
+
"minFilesPerBatch": 1,
|
|
463
|
+
"maxFilesPerBatch": 5
|
|
464
|
+
}
|
|
458
465
|
}
|
|
459
466
|
```
|
|
460
467
|
|
|
461
468
|
2. **启用并发处理**
|
|
462
469
|
```json
|
|
463
470
|
{
|
|
464
|
-
"
|
|
465
|
-
|
|
471
|
+
"ai": {
|
|
472
|
+
"concurrency": 3, // 并发 AI 请求数量
|
|
473
|
+
"maxFilesPerBatch": 5 // 控制批次文件数
|
|
474
|
+
}
|
|
466
475
|
}
|
|
467
476
|
```
|
|
468
477
|
|
|
469
|
-
3.
|
|
478
|
+
3. **调整智能分批参数**
|
|
470
479
|
```json
|
|
471
480
|
{
|
|
472
|
-
"
|
|
473
|
-
|
|
481
|
+
"ai": {
|
|
482
|
+
"minFilesPerBatch": 1,
|
|
483
|
+
"maxFilesPerBatch": 5
|
|
484
|
+
}
|
|
474
485
|
}
|
|
475
486
|
```
|
|
476
487
|
|
|
@@ -551,45 +562,71 @@ const reviewer = new CodeReviewer(customConfig, defaultRules);
|
|
|
551
562
|
```bash
|
|
552
563
|
# OpenAI API配置
|
|
553
564
|
export OPENAI_API_KEY="your-api-key"
|
|
554
|
-
export OPENAI_BASE_URL="https://api.openai.com/v1"
|
|
555
565
|
|
|
556
566
|
# 调试模式
|
|
557
567
|
export DEBUG_SMART_REVIEW=true
|
|
568
|
+
|
|
569
|
+
# 国际化(i18n)
|
|
570
|
+
# Windows PowerShell(当前会话)
|
|
571
|
+
$env:SMART_REVIEW_LOCALE='zh-CN' # 或 'en-US'
|
|
572
|
+
|
|
573
|
+
# macOS/Linux bash
|
|
574
|
+
export SMART_REVIEW_LOCALE=zh-CN # 或 en-US
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
如果需要使用自定义的 OpenAI 兼容服务,请在项目的配置文件中设置 `ai.baseURL`:
|
|
578
|
+
|
|
579
|
+
```json
|
|
580
|
+
{
|
|
581
|
+
"ai": { "baseURL": "https://api.openai.com/v1" }
|
|
582
|
+
}
|
|
558
583
|
```
|
|
559
584
|
|
|
585
|
+
## 🌍 国际化 (i18n)
|
|
586
|
+
|
|
587
|
+
- 配置项 `locale`:在 `.smart-review/smart-review.json` 顶层设置输出与模板语言,支持 `zh-CN`、`en-US`。示例:`{"locale": "en-US"}`。
|
|
588
|
+
- 环境变量 `SMART_REVIEW_LOCALE`:优先级最高,安装和复制模板时将按该值选择语言目录。
|
|
589
|
+
- 选择优先级:环境变量 > 项目配置 `.smart-review/smart-review.json` > 模板默认配置 `templates/smart-review.json` > `zh-CN`。
|
|
590
|
+
- 模板目录结构:`templates/rules/<locale>/security.js|performance.js|best-practices.js`;当指定语言缺失某文件时自动回退到 `zh-CN`。
|
|
591
|
+
- 控制台与 Git 钩子提示会随 `locale` 切换语言,无需额外配置。
|
|
592
|
+
- 切换示例:
|
|
593
|
+
- PowerShell:`$env:SMART_REVIEW_LOCALE='en-US'; node bin/install.js`
|
|
594
|
+
- Bash:`export SMART_REVIEW_LOCALE=en-US && node bin/install.js`
|
|
595
|
+
|
|
596
|
+
如需新增语言(例如 `ja-JP`),在 `templates/rules/ja-JP/` 下添加三类规则模板文件,并在配置中设置 `"locale": "ja-JP"` 或通过环境变量切换即可。
|
|
597
|
+
|
|
560
598
|
## 🔧 命令行参数
|
|
561
599
|
|
|
562
600
|
```bash
|
|
563
601
|
smart-review [options]
|
|
564
602
|
|
|
565
603
|
选项:
|
|
566
|
-
--staged 审查Git暂存区文件
|
|
567
|
-
--files <files>
|
|
568
|
-
--ai 强制启用AI分析
|
|
569
|
-
--no-ai 禁用AI分析
|
|
570
|
-
--diff-only
|
|
571
|
-
--
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
**增量审查相关参数说明:**
|
|
580
|
-
- `--diff-only`: 强制启用Git Diff增量审查模式,覆盖配置文件中的`reviewOnlyChanges`设置
|
|
581
|
-
- `--full-file`: 禁用增量审查,审查完整文件内容,适用于需要全面审查的场景
|
|
604
|
+
--staged 审查 Git 暂存区文件
|
|
605
|
+
--files <files> 审查指定文件(逗号分隔)
|
|
606
|
+
--ai 强制启用 AI 分析
|
|
607
|
+
--no-ai 禁用 AI 分析
|
|
608
|
+
--diff-only 仅审查变更行(Git Diff 模式)
|
|
609
|
+
--debug 输出调试日志
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
**增量审查相关说明:**
|
|
613
|
+
- `--diff-only`:仅审查变更行(Git Diff 模式),覆盖配置项 `ai.reviewOnlyChanges`
|
|
614
|
+
- 禁用增量审查:在 `.smart-review/smart-review.json` 将 `ai.reviewOnlyChanges` 设为 `false`,适用于需要全面审查的场景
|
|
582
615
|
|
|
583
616
|
**使用示例:**
|
|
584
617
|
```bash
|
|
585
618
|
# 强制使用增量审查模式
|
|
586
619
|
smart-review --staged --diff-only
|
|
587
620
|
|
|
588
|
-
#
|
|
589
|
-
smart-review
|
|
621
|
+
# 审查完整文件内容(在配置中关闭增量)
|
|
622
|
+
# .smart-review/smart-review.json
|
|
623
|
+
{
|
|
624
|
+
"ai": { "reviewOnlyChanges": false }
|
|
625
|
+
}
|
|
626
|
+
smart-review --files src/important.js
|
|
590
627
|
|
|
591
628
|
# 结合其他参数使用
|
|
592
|
-
smart-review --staged --diff-only --
|
|
629
|
+
smart-review --staged --diff-only --debug
|
|
593
630
|
```
|
|
594
631
|
|
|
595
632
|
## 🚀 CI/CD 集成
|
|
@@ -649,13 +686,13 @@ code_review:
|
|
|
649
686
|
**解决方案**: 检查 `OPENAI_API_KEY` 环境变量或配置文件中的密钥
|
|
650
687
|
|
|
651
688
|
4. **大文件处理超时**
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
689
|
+
```
|
|
690
|
+
❌ 文件分析超时
|
|
691
|
+
```
|
|
692
|
+
**解决方案**:
|
|
693
|
+
- 降低 `ai.maxRequestTokens` 或减少批次文件数(`maxFilesPerBatch`),并适当降低 `chunkOverlapLines`
|
|
694
|
+
- 增加 `chunkOverlapLines` 以减少分段数量
|
|
695
|
+
- 检查网络连接稳定性
|
|
659
696
|
|
|
660
697
|
5. **分段分析结果不完整**
|
|
661
698
|
```
|
|
@@ -667,28 +704,30 @@ code_review:
|
|
|
667
704
|
- 调整 `maxRequestTokens` 配置
|
|
668
705
|
|
|
669
706
|
6. **内存占用过高**
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
707
|
+
```
|
|
708
|
+
❌ 内存不足错误
|
|
709
|
+
```
|
|
710
|
+
**解决方案**:
|
|
711
|
+
- 减少 `maxFilesPerBatch` 配置值
|
|
712
|
+
- 调整 `minFilesPerBatch`/`maxFilesPerBatch` 控制每批文件数量
|
|
713
|
+
- 添加更多文件到 `ignoreFiles` 列表
|
|
677
714
|
|
|
678
715
|
7. **Token 限制错误**
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
716
|
+
```
|
|
717
|
+
❌ Request too large
|
|
718
|
+
```
|
|
719
|
+
**解决方案**:
|
|
720
|
+
- 降低 `maxRequestTokens` 配置值
|
|
721
|
+
- 减少每批文件数量或启用增量审查 `--diff-only`
|
|
722
|
+
- 检查是否有超大的单行代码
|
|
686
723
|
|
|
687
724
|
### 调试模式
|
|
688
725
|
|
|
689
|
-
|
|
726
|
+
启用调试日志:
|
|
690
727
|
```bash
|
|
691
|
-
DEBUG_SMART_REVIEW=true smart-review --staged
|
|
728
|
+
DEBUG_SMART_REVIEW=true smart-review --staged
|
|
729
|
+
# 或
|
|
730
|
+
smart-review --staged --debug
|
|
692
731
|
```
|
|
693
732
|
|
|
694
733
|
## 🤝 贡献
|