-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.coderabbit.yaml
More file actions
110 lines (95 loc) · 5.46 KB
/
.coderabbit.yaml
File metadata and controls
110 lines (95 loc) · 5.46 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
# =============================================================================
# CodeRabbit 설정 파일
# 마지막 업데이트: 2026/05/11
# =============================================================================
language: "ko-KR"
early_access: false
enable_free_tier: true
tone_instructions: "Apple 플랫폼 시니어 개발자 관점으로, 원인과 개선안을 짧고 명확히 제시하며 개선 중심으로 리뷰하세요."
# =============================================================================
# 리뷰 설정
# =============================================================================
reviews:
profile: "chill"
request_changes_workflow: false
high_level_summary: true
high_level_summary_placeholder: "@coderabbitai 요약"
auto_title_placeholder: "@coderabbitai"
poem: false
review_status: true
collapse_walkthrough: false
# ---------------------------------------------------------------------------
# 경로별 리뷰 체크리스트
# 규칙의 배경·예시는 docs/CODING_GUIDELINES.md를 참고하세요.
# ---------------------------------------------------------------------------
path_instructions:
- path: "**/*.swift"
instructions: |
아래 항목을 체크리스트로 사용해 리뷰하세요.
[안전성 — 최우선]
- 강제 언래핑(`!`) 사용 시 반드시 지적하고 `guard let` / `if let` / `??` 대안을 제시하세요.
- `unowned` 캡처 사용 시 `[weak self]` + `guard let self else { return }` 패턴으로 교체를 제안하세요.
- `init()`에서 네트워크 요청, DB 연결 등 시간이 오래 걸리는 작업이 없는지 확인하세요.
[접근 제어]
- 접근 제어가 가능한 가장 엄격한 수준인지 확인하세요. (`private` > `fileprivate` > `internal`)
- `internal`을 명시적으로 쓴 경우 제거를 제안하세요. (기본값이므로 불필요)
- `public extension` 패턴 대신 각 선언에 직접 접근 제어가 명시되어 있는지 확인하세요.
- 클래스 프로퍼티는 원칙적으로 `private`인지 확인하세요.
[클래스 설계]
- 더 이상 상속되지 않을 `class`에 `final`이 없으면 추가를 제안하세요.
- 프로토콜 정의에서 `class` 대신 `AnyObject`를 사용하는지 확인하세요.
- ViewController가 아닌 클래스 이름에 `*Controller`가 붙어 있으면 지적하세요.
[SwiftUI 뷰 구조]
- `var body` 안에 중첩 레이아웃이 직접 구현되어 있으면 `extension`의 `private var/func`로 분리를 제안하세요.
- 하위뷰가 `extension` 밖에 선언되어 있으면 이동을 제안하세요.
- 동일한 뷰가 2곳 이상 사용되거나, 독립적인 State/로직을 갖거나, 50줄 이상이면 별도 View 파일 분리를 제안하세요.
- 파라미터 없는 하위뷰는 `private var`, 파라미터 있는 하위뷰는 `private func`를 사용하는지 확인하세요.
[네이밍]
- 이벤트 핸들러 함수명이 과거형인지 확인하세요. (`didTapButton` ✅ / `handleButtonTap` ❌)
- 함수명 앞에 불필요한 `get`이 없는지 확인하세요.
- Bool 프로퍼티에 `is`, `has`, `can` 등의 접두사가 있는지 확인하세요.
- 이름이 애매한 경우 타입 힌트가 포함되어 있는지 확인하세요. (`cancelButton` ✅ / `cancel` ❌)
[패턴]
- `if let _ = thing` 패턴은 `if thing != nil`로 교체를 제안하세요.
- 복잡한 `didSet` 옵저버는 별도 메서드로 추출을 제안하세요.
- 전역 상수 그룹화에 `struct` 대신 케이스 없는 `enum`을 사용하는지 확인하세요.
- 튜플 반환 시 필드가 3개를 초과하면 `struct` 사용을 제안하세요.
[파일 구성]
- 코드 순서가 지켜지는지 확인하세요: 프로퍼티 → init → body → 메서드(public → private)
- `// MARK: -` 위아래에 빈 줄이 있는지 확인하세요.
- 모듈 임포트가 알파벳 순으로 정렬되어 있는지 확인하세요. (내장 프레임워크 먼저, 빈 줄로 서드파티 구분)
- path: "**/*.xcodeproj/**"
instructions: |
Xcode 프로젝트 파일은 리뷰를 스킵하되, 타겟/스킴 구조의 의도치 않은 변경이 있다면 코멘트하세요.
auto_review:
enabled: true
auto_incremental_review: true
labels: []
drafts: false
# =============================================================================
# 채팅 설정
# =============================================================================
chat:
auto_reply: true
# =============================================================================
# 지식베이스 설정
# =============================================================================
knowledge_base:
web_search:
enabled: true
learnings:
scope: auto
issues:
scope: auto
jira:
project_keys: []
# ---------------------------------------------------------------------------
# 코드 가이드라인
# CodeRabbit이 docs/ 폴더의 문서를 읽고 리뷰에 반영합니다.
# ---------------------------------------------------------------------------
code_guidelines:
enabled: true
filePatterns:
- "docs/CODING_GUIDELINES.md"
# TODO: 디자인 시스템 도입 후 아래 주석을 해제하세요.
# - "docs/DESIGN_SYSTEM_GUIDELINES.md"