-
Notifications
You must be signed in to change notification settings - Fork 44
Expand file tree
/
Copy path.coderabbit.yaml
More file actions
185 lines (161 loc) · 9.59 KB
/
.coderabbit.yaml
File metadata and controls
185 lines (161 loc) · 9.59 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
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: "ko-KR"
early_access: false
# 리뷰/채팅 톤을 고정한다
tone_instructions: >
공식적이고 표준어를 사용하고, 문장 끝은 '다'로 마무리한다.
칭찬은 최소화하고, 운영/장애/보안/성능/테스트 관점의 개선에 집중한다.
지적은 반드시 '왜 문제인지(운영 관점) + 수정안 + 추가 테스트'를 포함한다.
reviews:
# chill: 덜 잔소리, assertive: 더 촘촘한 피드백
profile: "chill"
# CodeRabbit이 자동으로 "changes requested"로 강하게 걸지 않도록 한다
request_changes_workflow: false
# PR 요약/워크스루 관련
high_level_summary: true
high_level_summary_instructions: >
변경 목적, 핵심 변경점, 리스크/주의사항, 테스트/검증 방법 순서로 4~8줄 요약을 작성한다.
추측이 필요한 부분은 단정하지 말고 확인 질문을 포함한다.
review_status: true
review_details: false
# 교육용이므로 불필요한 장식은 끈다
poem: false
# 리뷰 대상 파일 범위( glob + '!패턴' 방식 )
path_filters:
- "**"
- "build.gradle"
- "build.gradle.kts"
- "settings.gradle"
- "settings.gradle.kts"
- "!**/*.md"
- "!**/*.adoc"
- "!**/*.png"
- "!**/*.jpg"
- "!**/*.jpeg"
- "!**/*.gif"
- "!**/*.svg"
- "!**/*.lock"
- "!**/generated/**"
- "!**/build/**"
- "!**/out/**"
- "!**/.gradle/**"
# 경로별 리뷰 가이드(스키마에 존재하는 path_instructions 사용)
path_instructions:
# ----------------------------
# Kotlin (Spring Boot)
# ----------------------------
- path: "**/*.kt"
instructions: >
Kotlin + Spring Boot 리뷰 기준이다.
null-safety를 최우선으로 점검하고, '!!'는 불가피한 경우에만 허용하며 근거를 요구한다.
JPA 엔티티에 data class 사용은 원칙적으로 지양하고 equals/hashCode 구현 안정성(프록시/식별자 기반)을 점검한다.
scope function(let/apply/run/also) 과다 사용으로 가독성이 떨어지면 명시적 코드로 대안을 제시한다.
컬렉션 연산에서 불필요한 eager 처리와 중간 리스트 생성을 점검하고 필요 시 sequence 또는 반복문으로 단순화한다.
예외 처리는 도메인 예외와 인프라 예외를 구분하고, 로깅 시 민감정보 노출 가능성을 점검한다.
- path: "**/*Controller*.kt"
instructions: >
Kotlin Controller 리뷰 기준이다.
Controller는 요청 검증(Bean Validation)과 응답 조립에 집중하고 비즈니스 로직은 Service로 이동한다.
상태 코드와 에러 응답 포맷이 일관되는지 점검하고, @ControllerAdvice 기반 표준 처리로 유도한다.
요청 DTO와 응답 DTO를 명확히 분리하고, 엔티티를 직접 노출하지 않도록 점검한다.
바인딩/검증 실패 시 메시지와 로깅 전략이 과도하지 않은지 점검한다.
- path: "**/*Service*.kt"
instructions: >
Kotlin Service 리뷰 기준이다.
트랜잭션 경계(@Transactional) 위치와 전파, readOnly, 롤백 조건을 점검한다.
도메인 규칙이 흩어지지 않도록 유스케이스 단위로 책임을 정리하고, 사이드 이펙트를 명확히 한다.
외부 의존성 호출(HTTP/DB/메시지)에는 타임아웃, 재시도, 서킷브레이커 고려 여부를 점검한다.
멱등성(특히 이벤트 발행/결제/주문성 처리)과 중복 처리 방지 전략을 점검한다.
- path: "**/*Repository*.kt"
instructions: >
Kotlin Repository/JPA 리뷰 기준이다.
N+1 가능성, fetch join/EntityGraph 사용 여부, 페이징 시 fetch join 위험 등을 점검한다.
쿼리 조건 누락/과다 조회, 정렬/인덱스 활용 가능성, 대량 데이터에서의 성능 병목을 점검한다.
트랜잭션 밖에서 Lazy 로딩이 터질 가능성과, 영속성 컨텍스트 오염 가능성을 점검한다.
- path: "**/domain/**/*.kt"
instructions: >
Kotlin 도메인 모델 리뷰 기준이다.
값 객체/엔티티 경계를 명확히 하고, 불변성 유지 여부를 점검한다.
비즈니스 규칙은 도메인에 두고, 인프라 관심사가 섞이면 분리하도록 제안한다.
equals/hashCode는 식별자 기반 또는 명확한 값 기반으로 일관되게 설계한다.
- path: "**/*Test*.kt"
instructions: >
Kotlin 테스트 리뷰 기준이다.
단위 테스트는 행위/경계값/실패 케이스를 포함하는지 점검한다.
통합 테스트는 DB/외부 의존성 격리와 플래키 가능성을 점검하고, 테스트 데이터 준비/정리가 명확한지 본다.
Mock 남용으로 의미가 흐려지면 테스트 전략을 재정렬하도록 제안한다.
# ----------------------------
# Java (Spring Boot)
# ----------------------------
- path: "**/*.java"
instructions: >
Java + Spring Boot 리뷰 기준이다.
Optional/Stream 남용으로 가독성이 떨어지면 단순화하고, 예외 흐름이 명확한지 점검한다.
null 처리, 방어적 복사, 불변성, equals/hashCode/toString 구현 안정성을 점검한다.
예외 처리 시 cause를 보존하고, 사용자 메시지와 로그 메시지를 분리하도록 제안한다.
로깅 시 민감정보 노출 가능성을 점검한다.
- path: "**/*Controller*.java"
instructions: >
Java Controller 리뷰 기준이다.
Controller는 요청 검증(Bean Validation)과 응답 조립에 집중하고 비즈니스 로직은 Service로 이동한다.
상태 코드와 에러 응답 포맷이 일관되는지 점검하고, @ControllerAdvice 기반 표준 처리로 유도한다.
DTO와 엔티티를 분리하고, 엔티티를 직접 반환하지 않도록 점검한다.
- path: "**/*Service*.java"
instructions: >
Java Service 리뷰 기준이다.
트랜잭션 경계(@Transactional) 위치와 전파, readOnly, 롤백 조건을 점검한다.
유스케이스 단위로 책임이 정리되어 있는지, 부수 효과가 명확한지 점검한다.
외부 호출에는 타임아웃/재시도/서킷브레이커 고려 여부를 점검하고, 실패 시 대체 흐름을 제안한다.
멱등성과 중복 처리 방지 전략을 점검한다.
- path: "**/*Repository*.java"
instructions: >
Java Repository/JPA 리뷰 기준이다.
N+1 가능성, fetch join/EntityGraph 사용 여부, 페이징 시 fetch join 위험 등을 점검한다.
쿼리 조건 누락/과다 조회, 정렬/인덱스 활용 가능성, 대량 데이터에서의 병목을 점검한다.
트랜잭션 밖 Lazy 로딩 문제와 영속성 컨텍스트 오염 가능성을 점검한다.
- path: "**/domain/**/*.java"
instructions: >
Java 도메인 모델 리뷰 기준이다.
엔티티/값 객체/DTO 경계를 명확히 하고, 불변성과 캡슐화를 점검한다.
도메인 규칙과 인프라 관심사가 섞이면 분리하도록 제안한다.
equals/hashCode는 식별자 기반 또는 값 기반으로 일관되게 설계한다.
- path: "**/*Test*.java"
instructions: >
Java 테스트 리뷰 기준이다.
단위 테스트는 경계값/실패 케이스/예외 흐름을 포함하는지 점검한다.
통합 테스트는 격리 수준, 플래키 가능성, 테스트 데이터 준비/정리 전략을 점검한다.
Mock 남용으로 의미가 약해지면 테스트 방향을 재정렬하도록 제안한다.
# ----------------------------
# Spring 설정/빌드 파일
# ----------------------------
- path: "**/application*.yml"
instructions: >
Spring 설정 파일 리뷰 기준이다.
환경별 분리(프로파일)와 기본값 적절성을 점검하고, 민감정보가 커밋되지 않았는지 확인한다.
타임아웃, 커넥션 풀, 로깅 레벨 등 운영에 영향을 주는 설정 변경은 근거와 영향 범위를 요구한다.
- path: "**/application*.yaml"
instructions: >
Spring 설정 파일 리뷰 기준이다.
환경별 분리(프로파일)와 기본값 적절성을 점검하고, 민감정보가 커밋되지 않았는지 확인한다.
타임아웃, 커넥션 풀, 로깅 레벨 등 운영에 영향을 주는 설정 변경은 근거와 영향 범위를 요구한다.
- path: "**/build.gradle"
instructions: >
Gradle 빌드 파일 리뷰 기준이다.
의존성 추가/변경은 목적과 보안 취약점 리스크를 점검하고, 버전 고정 및 범위를 명확히 한다.
테스트 태스크/포맷터/정적 분석 태스크 변경은 CI 영향 범위를 함께 점검한다.
- path: "**/build.gradle.kts"
instructions: >
Gradle Kotlin DSL 빌드 파일 리뷰 기준이다.
의존성 추가/변경은 목적과 보안 취약점 리스크를 점검하고, 버전 고정 및 범위를 명확히 한다.
테스트 태스크/포맷터/정적 분석 태스크 변경은 CI 영향 범위를 함께 점검한다.
# 자동 리뷰 설정(문서 스키마: object)
auto_review:
enabled: true
drafts: false
auto_incremental_review: true
ignore_title_keywords:
- "wip"
- "draft"
chat:
# PR에서 @coderabbitai 멘션 시 자동 응답
auto_reply: true