我如何在 5 分钟内为 CI 流水线添加 AI 代码质量检查(第一天发现 47 个 Bug)
Source: Dev.to
问题
我的团队大约六个月前开始使用 AI 编码助手(Copilot、Cursor、Claude Code)。开发速度提升了,但出现了一类新的 bug:
// Bug 1: Hallucinated import — package doesn't exist
import { validateEmail } from 'email-validator-pro'; // ❌ Doesn't exist on npm
// Bug 2: Deprecated API — worked fine in 2020
const parsed = url.parse(request.url); // ⚠️ Deprecated since Node 15
// Bug 3: Security anti‑pattern
const query = `SELECT * FROM users WHERE id = ${userId}`; // 🔴 SQL injection这些 bug 能够逃过 ESLint、Prettier,甚至 TypeScript 的检查。它们可以成功编译,却在运行时出错。我需要一个质量关卡,专门识别 AI 生成代码中的缺陷。
解决方案:Open Code Review
Open Code Review (OCR) 是一个免费、开源的 CLI,用于检测 AI 特定的代码缺陷:
| 类别 | OCR 检测内容 |
|---|---|
| 幻觉导入 | 验证每个导入是否在 npm / PyPI 注册表中存在 |
| 过时 API | 基于 AST 的已弃用 API 检测 |
| 安全反模式 | 硬编码的密钥、eval()、SQL 注入 |
| 过度工程 | 圈复杂度、嵌套深度 |
| 上下文伪影 | 未使用的接口、因截断生成而产生的死代码 |
最佳部分: L1 模式在不到 10 秒的时间内运行 无需任何 AI。
5‑Minute Setup
Step 1 – Install (≈ 30 s)
npm install -g @opencodereview/cliStep 2 – Scan Locally (≈ 1 min)
ocr scan src/ --sla L1Sample report
╔══════════════════════════════════════════════════════════════╗
║ Open Code Review V4 — Quality Report ║
╚══════════════════════════════════════════════════════════════╝
Overall Score: 72/100 🟠 C
Files Scanned: 48 | Duration: 6.3s
🔴 [error] api/handler.ts:45 — Possible hardcoded API key
🟡 [warn] utils/request.ts:12 — url.parse() deprecated → WHATWG URL API
🟡 [warn] services/auth.ts:67 — Cyclomatic complexity 22 (max: 15)
⚪ [info] types/index.ts:8 — Unused interface (context window artifact)Step 3 – Add to GitHub Actions (≈ 2 min)
创建 .github/workflows/ocr.yml:
name: AI Code Quality Check
on: [pull_request]
jobs:
code-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install OCR
run: npm install -g @opencodereview/cli
- name: Scan changed files
uses: raye-deng/open-code-review@v1
with:
sla: L1
threshold: 60
scan-mode: diff
github-token: ${{ secrets.GITHUB_TOKEN }}Step 4 – Generate SARIF Report (≈ 1 min)
用于 GitHub Code Scanning 集成:
- name: Generate SARIF
run: ocr scan src/ --sla L1 --format sarif -o ocr-results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ocr-results.sarifStep 5 – Set Your Quality Threshold (≈ 30 s)
threshold 参数定义最低质量分数(0‑100)。如果扫描分数低于该阈值,CI 检查将失败。
threshold: 70 # 根据团队容忍度进行调整就这样。 现在你的 CI 流水线能够在代码合并前捕获 AI 生成的代码缺陷。
我在第一天发现的内容
对我们的主代码库进行 OCR 扫描后,发现如下:
| 发现项 | 数量 | 严重程度 |
|---|---|---|
| 幻想的导入 | 12 | 🔴 Error |
| 已弃用的 Node.js API | 8 | 🟡 Warning |
| 硬编码的密钥 | 3 | 🔴 Error |
| 过度设计的函数 | 15 | 🟡 Warning |
| 未使用的类型/接口 | 9 | ⚪ Info |
总计: 47 个问题,我们的现有工具链(ESLint + TypeScript + SonarQube)完全未检测到。
L2 模式 – AI‑驱动的深度分析
如果您需要更深入的分析,OCR 提供了 L2 模式,使用本地 AI(Ollama)进行:
- 跨文件一致性检查
- 语义重复检测
- AI 置信度评分
.ocrrc.yml example
sla: L2
ai:
embedding:
provider: ollama
model: nomic-embed-text
baseUrl: http://localhost:11434
llm:
provider: ollama
model: qwen3-coder
endpoint: http://localhost:11434L2 需要稍长的时间(中等项目约 30 秒),但能捕捉仅靠模式匹配无法发现的细微问题。
对比
| 特性 | OCR | ESLint | SonarQube | CodeRabbit |
|---|---|---|---|---|
| 幻觉式导入 | ✅ | ❌ | ❌ | ❌ |
| 已废弃 API 检测 | ✅ (AST) | ❌ | ⚠️ Partial | ❌ |
| 本地运行 | ✅ | ✅ | ✅ | ❌ |
| 免费 | ✅ | ✅ | Community | ❌ |
| SARIF 输出 | ✅ | Via plugin | ✅ | ❌ |
| AI‑特定规则 | ✅ | ❌ | ❌ | ⚠️ |
OCR 补充 您现有的工具——它并不取代它们。保留 ESLint 用于代码风格;添加 OCR 以检测 AI‑特定缺陷。
GitLab CI 集成
不是在 GitHub 上吗?没问题:
code-review:
script:
- npx @opencodereview/cli scan src/ --sla L1 --threshold 60 --format json --output ocr-report.json
artifacts:
reports:
codequality: ocr-report.json生产使用技巧
- 从 L1 开始。 它足够快,可用于每个 PR。随后在关键路径上添加 L2。
- 在 CI 中使用
scan-mode: diff只扫描已更改的文件——保持 PR 检查快速。 - 最初不要把阈值设得太高。 从 50‑60 开始,随后随着团队适应再提高。
- 将
.ocrrc.yml文件提交到版本控制,这样本地和 CI 使用相同的规则。 - 结合已有的 linter(ESLint、SonarQube)以构建全面的安全网。
享受更安全、AI 感知的开发工作流! 🚀
总结
AI 编码助手是令人难以置信的生产力提升工具,但它们也会引入一种传统工具未设计捕获的新型 bug 类别。
Open Code Review 填补了这一空白。它免费、开源、在本地运行,且仅需 5 分钟即可完成设置。
试一试
npm install -g @opencodereview/cli
ocr scan src/ --sla L1您遇到过哪些 AI 生成的代码 bug?欢迎在评论中分享您的经验。