topic★★★★★난이도 · 약 18분
코드 리뷰 마스터 — AI 코드 검증 5단계
AI가 생성한 코드를 체계적으로 검증하는 5단계 프레임워크: 의도 → 구조 → 엣지케이스 → 보안 → 성능.
#코드리뷰#검증#체크리스트#보안#성능
왜 배우는가
AI가 만든 코드가 '일단 돌아가는 것'과 '프로덕션에 넣어도 되는 것'은 전혀 다르다. 코드를 직접 짜지 않더라도, 검증하는 능력은 바이브코더의 가장 중요한 실무 역량이다.
바이브코더는 코드를 직접 작성하지 않지만, 코드를 검증하는 능력은 전통 개발자 못지않게 갖춰야 한다. AI가 생성한 코드를 "LGTM(Looks Good To Me)"으로 넘기는 순간, 잠재적 버그·보안 취약점·성능 병목이 프로덕션으로 직행한다.
| 단계 | 이름 | 핵심 질문 | 체크 포인트 |
|---|---|---|---|
| 1 | 의도 확인 | 내가 요청한 것과 일치하는가? | 요구사항 대비 누락·과잉 기능, 함수/변수 이름이 목적을 반영하는가 |
| 2 | 구조 파악 | 코드가 어떻게 흘러가는가? | 함수 분리가 적절한가, 중복 코드는 없는가, 데이터 흐름이 명확한가 |
| 3 | 엣지케이스 | 예외 상황에서 터지지 않는가? | 빈 배열, null 입력, 네트워크 실패, 동시 요청, 매우 큰 데이터 |
| 4 | 보안 체크 | 악의적 입력에 안전한가? | SQL 인젝션, XSS, 하드코딩된 비밀키, 권한 검사 누락 |
| 5 | 성능 검토 | 느려지거나 비용이 폭주하지 않는가? | 불필요한 반복, N+1 쿼리, 무한 루프 가능성, 메모리 누수 |
5단계를 모두 수행할 필요는 없다. 프로토타입 단계에서는 1~2단계만으로 충분하고, 프로덕션 배포 전에는 전 단계를 순서대로 체크한다. 중요한 것은 "무의식적 승인"을 멈추는 것이다.
markdown
## AI 코드 리뷰 체크리스트 (복사해서 사용)
### 1단계: 의도 확인
- [ ] 요청한 기능이 모두 구현되었는가?
- [ ] 요청하지 않은 기능이 추가되지 않았는가?
- [ ] 함수/변수 이름이 목적을 잘 드러내는가?
### 2단계: 구조 파악
- [ ] 하나의 함수가 하나의 역할만 하는가?
- [ ] 중복 코드가 없는가?
- [ ] import/export 구조가 깔끔한가?
### 3단계: 엣지케이스
- [ ] 빈 값(null, undefined, [])을 처리하는가?
- [ ] 네트워크 실패 시 에러 핸들링이 있는가?
- [ ] 매우 큰 입력에도 동작하는가?
### 4단계: 보안
- [ ] 사용자 입력을 검증/이스케이프하는가?
- [ ] API 키나 비밀번호가 코드에 노출되지 않았는가?
- [ ] 권한 체크가 적절한가?
### 5단계: 성능
- [ ] 불필요한 반복/재렌더링이 없는가?
- [ ] 데이터베이스 쿼리가 효율적인가?
- [ ] 메모리 누수 가능성이 없는가?이 체크리스트를 프로젝트의 CLAUDE.md나 별도 문서에 넣어두면, AI에게 "이 체크리스트 기준으로 코드를 점검해줘"라고 지시할 수도 있다.
bash
# Claude Code에서 코드 리뷰 요청하는 프롬프트 예시
claude "방금 만든 코드를 5단계로 리뷰해줘:
1. 의도 확인: 내가 요청한 것과 일치하는지
2. 구조 파악: 함수 분리와 데이터 흐름
3. 엣지케이스: null, 빈 배열, 네트워크 실패
4. 보안: 인젝션, 하드코딩 키, 권한
5. 성능: N+1 쿼리, 불필요한 반복"AI에게도 체계적인 리뷰를 요청하면 훨씬 정밀한 피드백을 받을 수 있다. 단, AI의 리뷰 결과도 무조건 신뢰하지 말고 직접 판단해야 한다.
코드 리뷰 역량은 읽은 코드의 양에 비례한다. 하루에 GitHub에서 인기 프로젝트의 Pull Request 1개만 읽어도, 한 달이면 30개의 실전 리뷰 사례를 체화할 수 있다. 처음에는 이해가 안 되는 부분이 많겠지만, "왜 이 변경을 했지?"라는 질문을 품고 읽는 것 자체가 훈련이다.