AI 코드 품질 검사를 CI 파이프라인에 5분 만에 추가한 방법 (첫날에 47개의 버그 발견)

발행: (2026년 3월 15일 오전 09:15 GMT+9)
8 분 소요
원문: Dev.to

I’m happy to translate the article for you, but I need the full text of the post (the content you’d like translated). Could you please paste the article’s body here? I’ll keep the source line exactly as you provided and translate the rest into Korean while preserving all formatting, markdown, and code blocks.

문제

우리 팀은 약 6개월 전부터 AI 코딩 어시스턴트(Copilot, Cursor, Claude Code)를 사용하기 시작했습니다. 생산성은 상승했지만, 새로운 종류의 버그가 나타났습니다:

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

이러한 버그들은 ESLint, Prettier, 심지어 TypeScript조차도 놓치고 지나갑니다. 컴파일은 정상적으로 되지만 런타임에서 오류가 발생합니다. 나는 AI가 생성한 코드 결함을 특별히 이해하는 품질 게이트가 필요했습니다.

해결책: Open Code Review

Open Code Review (OCR) 은 AI‑특화 코드 결함을 탐지하는 무료 오픈‑소스 CLI입니다:

카테고리OCR이 감지하는 항목
Hallucinated importsnpm / PyPI 레지스트리를 기준으로 모든 import를 검증합니다
Stale APIsAST 기반의 사용 중단된 API 감지
Security anti‑patterns하드코딩된 비밀키, eval(), SQL 인젝션 등 보안 안티패턴
Over‑engineering사이클로매틱 복잡도, 중첩 깊이 등 과도한 설계
Context artifacts사용되지 않는 인터페이스, 잘린 생성으로 인한 죽은 코드 등 컨텍스트 아티팩트

Best part: L1 모드는 AI 없이도 10 초 미만에 실행됩니다.

5‑분 설정

단계 1 – 설치 (≈ 30 초)

npm install -g @opencodereview/cli

단계 2 – 로컬에서 스캔 (≈ 1 분)

ocr scan src/ --sla L1

샘플 보고서

╔══════════════════════════════════════════════════════════════╗
║           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)

단계 3 – GitHub Actions에 추가 (≈ 2 분)

.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 }}

단계 4 – SARIF 보고서 생성 (≈ 1 분)

GitHub 코드 스캔 통합을 위해:

      - 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

단계 5 – 품질 임계값 설정 (≈ 30 초)

threshold 매개변수는 최소 품질 점수(0‑100)를 정의합니다. 스캔 점수가 이 값보다 낮으면 CI 검사가 실패합니다.

          threshold: 70  # Adjust based on your team's tolerance

이것으로 끝입니다. 이제 CI 파이프라인이 AI가 생성한 코드 결함을 병합 전에 잡아냅니다.

첫째 날에 찾은 내용

주 코드베이스에 OCR을 실행한 결과는 다음과 같습니다:

발견 사항수량심각도
환상적인 임포트12🔴 오류
폐기된 Node.js API8🟡 경고
하드코딩된 비밀3🔴 오류
과도하게 설계된 함수15🟡 경고
사용되지 않은 타입/인터페이스9⚪ 정보

총계: 47개 이슈가 기존 툴체인(ESLint + TypeScript + SonarQube)에서 완전히 놓쳤습니다.

L2 모드 – AI 기반 심층 분석

보다 깊은 분석이 필요하다면 OCR은 로컬 AI(Ollama)를 사용하는 L2 모드를 제공합니다:

  • 파일 간 일관성 검사
  • 의미 중복 감지
  • AI 신뢰도 점수 매기기

.ocrrc.yml 예시

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 초) 패턴 매칭만으로는 잡히지 않는 미묘한 문제들을 포착합니다.

How It Compares

FeatureOCRESLintSonarQubeCodeRabbit
Hallucinated imports
Deprecated API detection✅ (AST)⚠️ Partial
Runs locally
FreeCommunity
SARIF outputVia plugin
AI‑specific rules⚠️

OCR complements your existing tools — it doesn’t replace them. Keep ESLint for style; add OCR for AI‑specific defects.

Source:

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에서 동일한 규칙이 실행됩니다.
  • 기존 린터(ESLint, SonarQube)와 결합해 포괄적인 안전망을 구축하세요.

보다 안전하고 AI 인식이 가능한 개발 워크플로우를 즐기세요! 🚀

마무리

AI 코딩 어시스턴트는 놀라운 생산성 향상 도구이지만, 기존 도구가 잡지 못하도록 설계되지 않은 새로운 종류의 버그를 도입합니다.

Open Code Review는 그 격차를 메웁니다. 무료이며 오픈‑소스이고 로컬에서 실행되며 설정에 단 5 분만 걸립니다.

사용해 보기

npm install -g @opencodereview/cli
ocr scan src/ --sla L1

GitHub · Portal · NPM

AI‑생성 코드 버그를 어떤 경험을 하셨나요? 댓글로 여러분의 경험을 듣고 싶습니다.

0 조회
Back to Blog

관련 글

더 보기 »

트라비고

Gemini와 함께 말하는 속도만큼 빠르게 여행하세요! 라이브 에이전트가 몰입형 스토리텔링 및 3D 내비게이션과 만나는 곳. 이 프로젝트는 Gemini Live Ag...에 진입하기 위해 만들어졌습니다.