본문으로 건너뛰기

코드 리뷰 가이드라인

1. 코드 리뷰 목적

1.1 품질 보장

  • 코드 품질 향상
  • 버그 조기 발견
  • 보안 취약점 검토
  • 성능 이슈 검토

1.2 지식 공유

  • 코드베이스 이해도 향상
  • 모범 사례 공유
  • 팀 멤버 간 학습
  • 일관된 코딩 스타일 유지

2. PR(Pull Request) 작성 가이드

2.1 PR 제목

  • 명확하고 간결한 제목
  • 작업 유형 포함 (feat, fix, docs, style, refactor, test, chore)
  • 스코프는 괄호 안에 표시 (선택사항)
  • NX 프로젝트의 경우 프로젝트 경로를 스코프에 포함
  • 50자 이내로 제한
  • 마침표로 끝내지 않음
  • 영문으로 작성

예시:

feat(apps/dta-wide-api): add login validation (#123)
fix(libs/core): resolve memory leak in cache service (#456)
docs(apps/dta-wide-web): update API documentation
style(libs/core-utils): format code according to style guide
refactor(apps/dta-wide-api): improve error handling
test(libs/api-interfaces): add unit tests for DTO validation
chore(root): update dependency versions

2.2 PR 설명

  • 변경 사항 요약 (영문)
  • 주요 설계 결정 설명
  • 테스트 방법 안내
  • 관련 이슈/문서 링크
  • 스크린샷/데모 (UI 변경 시)

예시:

feat(apps/dta-wide-api): add login validation

- Implement email format validation
- Add password strength check
- Set up rate limiting for login attempts

Changes:
- Add email regex validation in UserService
- Implement password policy (min 8 chars, special chars required)
- Configure rate limiting middleware (max 5 attempts per minute)

Test Plan:
1. Run unit tests: `nx test dta-wide-api`
2. Test invalid email formats
3. Test weak passwords
4. Verify rate limiting behavior

Related:
- Implements #123
- Depends on libs/core#45

Screenshots:
- [Password strength indicator](url)
- [Rate limit error message](url)

2.3 PR 크기

  • 가능한 작게 유지 (200-400 LOC 이상)
  • 하나의 기능/수정에 집중
  • 필요시 여러 PR로 분할

3. 리뷰어 가이드

3.1 리뷰 우선순위

  1. 아키텍처/설계
  2. 기능 정확성
  3. 보안
  4. 성능
  5. 테스트
  6. 코드 스타일

3.2 리뷰 체크리스트

  • 비즈니스 로직이 명확한가?
  • 적절한 테스트가 포함되었는가?
  • 보안 위험이 있는가?
  • 성능 이슈가 있는가?
  • 코드가 이해하기 쉬운가?
  • 문서화가 적절한가?
  • 에러 처리가 적절한가?
  • 코딩 컨벤션을 준수하는가?

3.3 리뷰 코멘트 작성

  • 건설적이고 구체적인 피드백
  • 코드의 문제점과 개선 방안 제시
  • 긍정적인 피드백도 포함
  • 개인이 아닌 코드에 집중

예시:

// 좋은 예시
이 부분에서 N+1 쿼리 문제가 발생할 수 있습니다.
다음과 같이 개선하면 좋을 것 같습니다:
\`\`\`typescript
const users = await this.userRepository
.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts')
.getMany();
\`\`\`

// 나쁜 예시
이렇게 하면 안 됩니다.

4. 작성자 가이드

4.1 리뷰 준비

  • 자체 리뷰 먼저 수행
  • 테스트 실행 및 확인
  • 문서 업데이트 확인
  • 불필요한 변경사항 제거

4.2 리뷰 대응

  • 모든 코멘트에 응답
  • 변경사항 설명 제공
  • 건설적인 토론 진행
  • 적절한 수정 반영

5. 리뷰 프로세스

5.1 리뷰 단계

  1. PR 작성 및 제출
  2. 자동화된 검사 실행
  3. 리뷰어 할당
  4. 코드 리뷰 진행
  5. 피드백 반영
  6. 승인 및 병합

5.2 자동화된 검사

  • 린트 검사
  • 테스트 실행
  • 타입 체크
  • 커버리지 확인
  • 보안 취약점 검사

5.3 리뷰 완료 조건

  • 최소 1명 이상의 승인
  • 모든 자동화 검사 통과
  • 모든 코멘트 해결
  • 테스트 커버리지 충족

변경 이력

버전날짜작성자변경 내용
0.1.02025-03-25bok@weltcorp.com최초 작성