-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path.coderabbit.yaml
More file actions
198 lines (162 loc) · 9.88 KB
/
Copy path.coderabbit.yaml
File metadata and controls
198 lines (162 loc) · 9.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
# CodeRabbit 설정 파일 - 2026-KUSITMS-GLIT-FRONT
# ─────────────────────────────────────────
# 🌐 언어 설정
# ─────────────────────────────────────────
language: "ko-KR"
# ─────────────────────────────────────────
# 🔍 코드래빗 리뷰 기본 설정
# ─────────────────────────────────────────
reviews:
# 리뷰 강도 프로필
# - "chill" : 버그/보안 등 중요한 이슈만 코멘트
profile: "chill"
# PR에 변경 요청(Request Changes) 기능 사용 여부
# false → 항상 Comment로만 남김 (머지 차단 없음)
request_changes_workflow: false
# PR 상단에 전체 요약(High Level Summary) 자동 생성 여부
# false → 요약 없음
high_level_summary: false
# 리뷰 완료 후 축하 시(poem) 생성 여부
# false → 시 없음
poem: false
# 리뷰 상태 코멘트 표시 여부
# true → "리뷰 시작", "리뷰 완료" 등 상태를 코멘트로 알려줌
review_status: true
# 워크스루(파일별 변경 설명) 섹션을 기본으로 접어둘지 여부
# false → 펼친 상태로 표시
collapse_walkthrough: false
# 시퀀스 다이어그램 자동 생성 여부 (API 흐름 등이 변경됐을 때)
# false → 다이어그램 없음
sequence_diagrams: false
# 변경된 파일 목록 요약 표시 여부
# true → PR에서 변경된 파일 목록을 요약해서 보여줌
changed_files_summary: true
# 자동 리뷰 설정
auto_review:
# 자동 리뷰 활성화 여부
# true → PR 열리거나 커밋 추가되면 자동으로 리뷰
enabled: true
# 드래프트 PR도 리뷰할지 여부
# false → 드래프트 PR은 리뷰 안 함
drafts: false
# 증분 리뷰 여부 (새 커밋이 추가됐을 때 전체 재리뷰 vs 변경분만 리뷰)
# true → 새 커밋의 변경분만 리뷰
auto_incremental_review: true
# 특정 브랜치로 들어오는 PR만 리뷰할지 여부
base_branches:
- "dev" # dev 브랜치로 들어오는 PR 리뷰
# ── 리뷰에서 제외할 파일/폴더 패턴 ──────────────
# "!" 접두사 = 제외
path_filters:
- "!**/node_modules/**" # 패키지 폴더 제외
- "!**/dist/**" # 빌드 결과물 제외
- "!**/.next/**" # Next.js 빌드 캐시 제외
- "!**/coverage/**" # 테스트 커버리지 리포트 제외
- "!**/__snapshots__/**" # Jest 스냅샷 제외
- "!**/*.lock" # lock 파일 제외 (yarn.lock 등)
- "!**/pnpm-lock.yaml" # pnpm lock 파일 제외
- "!**/*.min.js" # 압축된 JS 파일 제외
- "!**/*.min.css" # 압축된 CSS 파일 제외
- "!**/__generated__/**" # 자동 생성 코드 제외 (GraphQL 등)
- "!**/*.generated.*" # 자동 생성 파일 제외
- "!**/public/**" # 정적 에셋 폴더 제외
# ── 경로별 맞춤 리뷰 지침 ────────────────────────
# 특정 파일/폴더에 대해 어떤 관점으로 리뷰할지 지정
# 여기에 지정한 팀컨벤션 반영
path_instructions:
- path: "src/components/**"
instructions: |
React 컴포넌트를 리뷰할 때 다음을 확인해주세요:
- 컴포넌트는 화살표 함수로 작성 후 export default로 내보내는지 확인 (ex. const Button = () => { ... }; export default Button;)
- 컴포넌트명은 PascalCase인지, 파일명과 일치하는지 확인
- 컴포넌트 파일은 components/common 또는 components/도메인별 폴더 안에 위치하는지 확인
- 불필요한 re-render를 유발하는 코드가 없는지
- path: "src/hooks/**"
instructions: |
커스텀 훅을 리뷰할 때 다음을 확인해주세요:
- 훅 이름이 'use'로 시작하는지
- 파일명이 camelCase인지 (ex. useDeviceSearch.ts, useLoginForm.ts)
- API 호출 hook의 경우 "use + METHOD + 함수명" 형식인지 확인 (ex. usePatchEditProfile)
- 의존성 배열(dependency array)이 올바르게 설정되어 있는지
- path: "src/app/**/page.tsx"
instructions: |
페이지 파일을 리뷰할 때 다음을 확인해주세요:
- 파일명은 page.tsx로 통일
- 컴포넌트는 반드시 화살표 함수 + 변수 선언 방식으로 작성 (export default function Page() 형식 사용 금지)
- 페이지 컴포넌트는 export default로 내보내야 함 (named export 아님)
- 훅 사용 여부에 따라 변수명 대소문자를 구분:
- 훅을 사용하지 않는 정적 페이지 → 소문자 page (ex. const page = () => {}; export default page;)
- 훅(useState, useEffect 등)을 사용하는 페이지 → 대문자 Page (ex. const Page = () => {}; export default Page;)
- path: "src/assets/**"
instructions: |
에셋 파일을 리뷰할 때 다음을 확인해주세요:
- 파일명은 소문자로 작성되어 있는지 확인 (ex. logo.svg)
- 단어 구분이 필요한 경우 snake-case(언더스코어) 사용 허용 (ex. chevron_right.svg, onboarding_lines.svg)
- 대문자, camelCase, PascalCase 사용은 컨벤션 위반
- path: "src/apis/**"
instructions: |
API 관련 코드를 리뷰할 때 다음 팀 컨벤션을 확인해주세요:
[파일 구조]
- apis/ 폴더 아래에 도메인(auth, combo, mypage 등) 기준으로 폴더를 구성하는지 확인
[함수 네이밍]
- 파일명과 함수명은 반드시 "METHOD + 함수명" 형식인지 확인 (ex. patchEditProfile, postJoin, getComboEvaluation)
- METHOD는 get, post, put, patch, delete 중 하나여야 함
[에러 핸들링]
- try/catch는 apis/ 함수 내부가 아닌, 호출부(컴포넌트 또는 hook)에서 작성해야 함
[console.log]
- PR 제출 코드에 console.log가 남아있으면 반드시 지적
[URI]
- URI는 상수화하지 않고 API 함수 내에서 문자열로 직접 작성 (ex. axiosInstance.get('/api/combo/list'))
- URI를 별도 상수로 분리했다면 컨벤션 위반
[민감 정보]
- 토큰, 키 등 민감한 정보가 하드코딩되어 있지 않은지 확인
- path: "src/types/**"
instructions: |
타입 정의 코드를 리뷰할 때 다음 팀 컨벤션을 확인해주세요:
[파일 구조]
- types/ 폴더 아래에 도메인(auth, combo, mypage 등) 기준으로 폴더를 구성하는지 확인
- API / 비즈니스 도메인 기준으로 파일이 분리되어 있는지 확인
[타입 정의]
- any 타입 사용 지양
- path: "src/constants/**"
instructions: |
상수 파일을 리뷰할 때 다음 팀 컨벤션을 확인해주세요:
[tokenKey.ts]
- token 관련 Key는 반드시 constants/tokenKey.ts 에서 관리해야 함
- 상수명은 대문자와 언더스코어(_)로만 구성되어 있는지 확인 (ex. ACCESS_TOKEN, REFRESH_TOKEN)
[queryKey.ts]
- React Query의 queryKey는 반드시 constants/queryKey.ts 에서 관리해야 함
- queryKey 객체의 키가 대문자로만 이루어져 있는지, 또는 대문자와 언더스코어(_)로만 구성되어 있는지 확인
- queryKey를 컴포넌트나 hook 내부에 직접 문자열로 작성했다면 컨벤션 위반
# ── 전체 공통 리뷰 지침 ──────────────────────────
instructions: |
다음 팀 컨벤션을 기준으로 리뷰해주세요:
- 커밋 메시지는 "지라티켓번호 [타입] 작업내용" 형식을 따릅니다 (ex. GRT-35 [UI] 로그인 페이지 구현)
- 커밋 타입은 대괄호 안에 대문자로 작성합니다: [FEAT], [MOD], [ADD], [CHORE], [DEL], [UI], [FIX], [MOVE], [RENAME], [REFACTOR], [DOCS], [STYLE]
- 커밋 메시지 형식이 지켜지지 않은 경우, 틀렸다고 지적하기보다 올바른 형식으로 다음 커밋부터 작성할 수 있도록 부드럽게 제안해주세요
- 브랜치명은 feature/#지라티켓번호-작업명 또는 hotfix/#지라티켓번호-작업명 형식을 따릅니다 (ex. feature/#GRT-35-common_components)
- TypeScript에서 any 타입 사용은 지양합니다
- 코드 스타일(포매팅)은 Prettier가 담당하므로 리뷰하지 않아도 됩니다
- PR 제출 시 console.log는 반드시 제거되어야 합니다
# ─────────────────────────────────────────
# 💬 채팅(코멘트 답변) 설정
# ─────────────────────────────────────────
chat:
# CodeRabbit 리뷰 코멘트에 답글 달았을 때 자동으로 응답할지 여부
# false → @coderabbitai 멘션해야만 응답
auto_reply: false
# ─────────────────────────────────────────
# 🧠 지식베이스 설정
# ─────────────────────────────────────────
knowledge_base:
# 지식베이스 사용 거부 여부
# false → 지식베이스 사용 (PR 패턴, 팀 학습 내용 축적)
opt_out: false
# 웹 검색 허용 여부 (리뷰 중 최신 라이브러리 정보 등 참조)
web_search:
enabled: true
# 학습 범위 설정
learnings:
# "local" → 현재 레포지토리만 학습
scope: local