AI 코드 품질 검사를 CI 파이프라인에 5분 만에 추가한 방법 (첫날에 47개의 버그 발견)
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 imports | npm / PyPI 레지스트리를 기준으로 모든 import를 검증합니다 |
| Stale APIs | AST 기반의 사용 중단된 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 API | 8 | 🟡 경고 |
| 하드코딩된 비밀 | 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:11434L2는 약간 더 오래 걸리며(중간 규모 프로젝트 기준 약 30 초) 패턴 매칭만으로는 잡히지 않는 미묘한 문제들을 포착합니다.
How It Compares
| Feature | OCR | ESLint | SonarQube | CodeRabbit |
|---|---|---|---|---|
| Hallucinated imports | ✅ | ❌ | ❌ | ❌ |
| Deprecated API detection | ✅ (AST) | ❌ | ⚠️ Partial | ❌ |
| Runs locally | ✅ | ✅ | ✅ | ❌ |
| Free | ✅ | ✅ | Community | ❌ |
| SARIF output | ✅ | Via 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 L1AI‑생성 코드 버그를 어떤 경험을 하셨나요? 댓글로 여러분의 경험을 듣고 싶습니다.