diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..895a591 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,43 @@ +language: "ko-KR" + +reviews: + profile: "chill" + high_level_summary: true + poem: false + + auto_review: + enabled: true + drafts: false + base_branches: + - "main" + - "develop" + + request_changes_workflow: false + + path_filters: + - "src/**" + - "!dist/**" + - "!pnpm-lock.yaml" + - "!build/**" + - "!**/*.lock" + + path_instructions: + - path: "src/**" + instructions: > + 다음 핵심 영역에 집중하여 리뷰한다. + 1. 상태 관리: 서버 상태(React Query)와 전역 상태(Zustand)의 분리 여부 확인. useMutation, useQuery의 올바른 사용 확인. + 2. 구조와 책임 분리: 페이지에 비즈니스 로직이 과도하지 않은지 확인. 커스텀 훅으로의 분리 여부 검토. + 3. Hook 사용: useEffect 의존성 배열 및 불필요한 사용 검토. useCallback, useMemo의 적절한 사용. + 4. 타입 안정성: TypeScript 타입의 명확성 확인. any 사용 지양, 제네릭 활용 검토. + 5. 성능: 불필요한 리렌더링 체크. React.memo, useCallback 사용 검토. + 6. 에러 처리: API 실패 대응 및 사용자 피드백 적절성 검토. 에러 바운더리 사용 확인. + 7. 접근성: 시맨틱 HTML, ARIA 속성 사용 확인. + +chat: + auto_reply: true + +tone_instructions: > + 모든 리뷰는 반드시 한국어로, 팀원들에게 말하듯이 작성한다. + 구조, 상태 관리, 접근성, 성능, 안정성, 버그 중심으로 리뷰한다. + 피드백은 명확하고 구체적으로 작성하며, 문제의 원인과 개선 방법을 함께 제시한다. + 차분하고 전문적인 톤을 유지하되, 이해하기 쉽게 전달한다. diff --git a/docs/code-review-guideline.md b/docs/code-review-guideline.md new file mode 100644 index 0000000..323c33a --- /dev/null +++ b/docs/code-review-guideline.md @@ -0,0 +1,66 @@ +# Code Review Guideline + +## CodeRabbit 도입 의도 + +- **일관된 코드 품질 유지** + + 개인의 리뷰 스타일이나 컨디션에 영향을 받지 않고, 설정된 기준에 따라 일관된 리뷰를 제공하기 위함입니다. + +- **리뷰 효율화** + + 단순 문법 오류, 컨벤션, 구조적 패턴 검증은 AI가 선행하고, 팀원들은 비즈니스 로직과 설계 판단에 더 집중할 수 있도록 합니다. + +  + +## 팀 코드 리뷰 원칙 + +우리 팀은 다음 가치를 최우선으로 생각하며 코드를 작성하고 리뷰합니다. + +- 서버 상태와 UI 상태의 명확한 분리 +- 책임과 역할이 분명한 구조 설계 +- 타입 안정성을 통한 예측 가능한 코드 +- 불필요한 복잡성 최소화 +- 장기 유지보수를 고려한 구현 + +  + +## 핵심 리뷰 영역 + +위 코드 리뷰 원칙을 바탕으로, CodeRabbit은 다음 핵심 영역을 중심으로 리뷰합니다. + +### 1. 상태 관리 + +- 서버 상태(React Query)와 전역 상태(Zustand)의 분리 여부 확인 +- `useQuery`, `useMutation`의 올바른 사용 여부 검토 + +### 2. 구조와 책임 분리 + +- 페이지에 비즈니스 로직이 과도하게 포함되지 않았는지 확인 +- 커스텀 훅으로의 분리 여부 검토 + +### 3. Hook 사용 + +- `useEffect` 의존성 배열의 정확성 확인 +- 불필요한 Hook 사용 여부 검토 +- `useCallback`, `useMemo`의 적절한 사용 여부 확인 + +### 4. 타입 안정성 + +- TypeScript 타입이 명확하게 정의되어 있는지 확인 +- `any` 사용 지양 +- 제네릭 활용 검토 + +### 5. 성능 + +- 불필요한 리렌더링 체크 +- `React.memo`, `useCallback` 등의 적절한 사용 여부 검토 + +### 6. 에러 처리 + +- API 실패 대응이 적절히 구현되어 있는지 확인 +- 사용자 피드백 적절성 검토 +- Error Boundary 사용 확인 + +### 7. 접근성 + +- 시맨틱 HTML, ARIA 속성 사용 확인