我如何在 5 分钟内为 CI 流水线添加 AI 代码质量检查(第一天发现 47 个 Bug)

发布: (2026年3月15日 GMT+8 08:15)
7 分钟阅读
原文: Dev.to

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/cli

Step 2 – Scan Locally (≈ 1 min)

ocr scan src/ --sla L1

Sample 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.sarif

Step 5 – Set Your Quality Threshold (≈ 30 s)

threshold 参数定义最低质量分数(0‑100)。如果扫描分数低于该阈值,CI 检查将失败。

          threshold: 70  # 根据团队容忍度进行调整

就这样。 现在你的 CI 流水线能够在代码合并前捕获 AI 生成的代码缺陷。

我在第一天发现的内容

对我们的主代码库进行 OCR 扫描后,发现如下:

发现项数量严重程度
幻想的导入12🔴 Error
已弃用的 Node.js API8🟡 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:11434

L2 需要稍长的时间(中等项目约 30 秒),但能捕捉仅靠模式匹配无法发现的细微问题。

对比

特性OCRESLintSonarQubeCodeRabbit
幻觉式导入
已废弃 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

GitHub · Portal · NPM

您遇到过哪些 AI 生成的代码 bug?欢迎在评论中分享您的经验。

0 浏览
Back to Blog

相关文章

阅读更多 »