AI가 코드를 짜주는 시대에 리뷰는 더 빡빡해져야 합니다. 사람이 읽는 속도는 그대로인데 코드가 나오는 속도는 빨라졌으니까요. GitHub이 10월 9일에 내놓은 CodeQL 2.27.2가 바로 그 지점을 찌릅니다. C++ 정규식 파서와 Rust 비동기 흐름 추적 같은 "놓치기 쉬운 곳을 기계가 대신 보는" 업데이트입니다. CLI 기준으로는 10월 7일 릴리스입니다.

이 글은 릴리스 노트를 PR 게이트 관점에서 읽습니다. 뭐가 더 잡히는지, 뭐가 깨질 수 있는지, 내 CI에 뭘 확인해야 하는지까지요.

이번에 더 잡히는 것: 언어별 핵심만

전체 방향은 한 줄입니다. 기본 보안 쿼리 498개·170개 CWE, 확장은 131개 추가·32개 CWE 추가. 그물 자체는 그대로 두고, 그물이 닿는 구석을 넓힌 릴리스입니다.

C/C++ — 정규식과 외부 라이브러리 흐름
 [o] std::regex의 ECMAScript 문법 정규식을 직접 파싱
     → 정규식 검사가 문자열이 아니라 패턴 구조를 봄
 [o] Comdb2 C API(cdb2_run_statement 등)에 SQL 인젝션 싱크 모델 추가
 [o] Bloomberg BDE 코덱·bslx 바이트스트림 역직렬화 흐름 요약 추가

Rust — 비동기와 문서·속성
 [o] 추출기가 rust-analyzer 0.0.352 기반, AnyAttr·DocComment 클래스 지원
 [o] await와 함께 쓰는 async 블록의 데이터 흐름 개선
 [o] native-tls·async-native-tls·tokio-native-tls 흐름 요약 추가

Go — 가져오기 경로와 제어 흐름
 [o] github.com/coder/websocket 경로 모델링 (기존 nhooyr.io 외에 추가)
 [o] 제어 흐름 그래프 라이브러리 변경 (사용자 쿼리 수정 필요할 수 있음)

JavaScript/TypeScript — 워크플로와 라우트
 [o] Workflow SDK의 "use workflow"·"use step" 지시어 인식
 [o] Hapi 라우트 핸들러·요청 입력 추적 개선 (등록 헬퍼·고차함수 경유 포함)

그림으로 그리면 이렇습니다.

예전: 코드 → 문자열로 보고 패턴 매칭 → 놓치는 흐름 발생
지금: 코드 → 구조로 보고 흐름 추적
  ├─ C++ 정규식: 패턴 안까지 들여다봄
  ├─ Rust async: await 경계를 넘어 데이터가 어디로 가는지 따라감
  └─ JS 워크플로: 지시어·라우트 등록 방식을 알아보고 입력 추적

C# 쿼리 다듬기와 Actions 신뢰 소유자 제외 옵션, CLI 오류 처리 개선도 함께 왔습니다. AI가 생성한 코드가 섞인 PR일수록 이런 "흐름 추적" 개선이 체감됩니다. 사람이 diff를 다 읽지 못하는 곳을 기계가 메우니까요.

깨질 수 있는 것: macOS 27과 Go 쿼리

좋아진 것만 있지 않습니다. 두 곳은 미리 확인하세요.

주의 1 — macOS 27 + Xcode 27 (컴파일 언어)
  다중 아키텍처(x86-64/arm64) 바이너리 제공 방식 변경 때문
  → CodeQL 자동 빌드·수동 빌드 모드 일부 제한
  → C++/Linux 프로젝트는 CI 이미지·Xcode 버전을 먼저 점검

주의 2 — Go 제어 흐름 그래프 라이브러리 (맞춤 쿼리)
  ControlFlow::EntryNode·ExitNode·SwitchStmt.getExpr 추가 등 변경
  → 기존 맞춤 쿼리가 깨질 수 있음, 릴리스 노트 보고 수정 필요

버전 올리고 CI가 빨개지는 것만큼 허무한 일도 없습니다. 올리기 전에 테스트 브랜치에서 코드 스캔 한 번 돌리고, 맞춤 쿼리가 있으면 Go 변경점부터 대조하세요.

CodeBridge Mini Lab: PR 게이트에 연결하기

설정은 거창할 필요 없습니다. 머지 전에 자동으로 돌고, 막히면 사람이 보는 구조면 됩니다.

# .github/workflows/codeql.yml — 개념 스케치 (구조 참고용)
# code-scanning + 맞춤 쿼리 경로만 자신의 저장소에 맞게 고치세요
name: codeql-gate
on:
  pull_request:
    branches: [main]
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: cpp, rust, go, javascript
          queries: security-and-quality
      - uses: github/codeql-action/analyze@v3
PR 게이트 4종 세트:
 [ ] 기본(Default) 스위트 켜기 — 498개 쿼리·170개 CWE가 출발선
 [ ] 언어별 확인 — C++ 정규식·Rust async·JS 워크플로가 내 저장소에 있는지
 [ ] AI 생성 코드 표시 — Copilot·에이전트가 만진 파일에 리뷰어 지정
 [ ] 비밀키 스캔과 함께 — 코드 스캔 + 시크릿 스캔을 같은 게이트에

릴리스 직후 점검 2개:
 [ ] macOS 27·Xcode 27 조합이면 컴파일 언어 빌드 모드 확인
 [ ] Go 맞춤 쿼리가 있으면 제어 흐름 변경점 대조

Copilot 로컬 샌드박스 글의 격리와 이 글의 검사를 겹치면 구조가 완성됩니다. 실행은 샌드박스에 가두고, 결과는 CodeQL이 읽고, 사람은 diff 5분 읽기로 마무리하는 겁니다.

결론: 빨리 짜고, 늦게 합치세요

한 줄로 정리합니다.

생성 속도는 AI에 맡기고, 합치는 속도는 게이트에 맡기세요.

2.27.2는 거창한 새 제품이 아니라 그물을 촘촘하게 만드는 릴리스입니다. 정규식 안, await 너머, 워크플로 지시어 뒤를 기계가 보게 됐습니다. 오늘 할 일은 작습니다. C++/Linux 프로젝트의 CodeQL 설정과 CI 호환성을 점검하고, 다음 PR부터 기본 스위트를 게이트에 거세요. 그게 AI 생성 코드 시대의 최소 요금입니다.

함께 읽으면 좋은 글

참고 자료

이 주제를 직접 따라가며 배우고 싶다면

검증과 제약이 있는 개발 흐름으로 AI 코드를 통제하는 연습이 필요하다면, 프로젝트 규칙·검증 기준·작업 환경을 정리하는 과정이 이 글의 PR 게이트와 바로 이어집니다.