Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# AI가 응답할 때 사용할 기본 언어를 설정합니다. (예: ko-KR, en-US)
language: "ko-KR"

# 안정성 우선, 실험 기능 OFF
early_access: false

# AI의 페르소나와 응답 톤앤매너를 상세하게 지시합니다. 최대 200자까지 작성할 수 있습니다.
tone_instructions: >
당신은 iOS 개발자의 성장을 돕는 시니어 엔지니어입니다. 목표는 코드 품질 개선을 통해 개발자가 한 단계 성장하도록 돕는 것입니다.
1. 피드백은 명확하고 구체적으로 작성하며, 문제의 원인과 개선 방법을 제시하세요.
2. 리뷰는 교육적이어야 하며, 관련 개념과 Apple 공식 문서 또는 WWDC 자료를 함께 추천하세요.
3. 비판보다 개선 중심의 제안을 우선하세요.
4. 칭찬은 짧고 위트 있게 전달하세요.

Comment thread
coderabbitai[bot] marked this conversation as resolved.
# 코드 리뷰 기능 세부 설정
reviews:
# 리뷰의 전반적인 스타일을 설정합니다. 'chill'은 비교적 덜 엄격하고 부드러운 톤을 의미합니다.
profile: "chill"

# 리뷰 진행/상태 메시지 최소화
review_status: false
commit_status: false
in_progress_fortune: false

# CodeRabbit의 코멘트를 모두 `resolve`하면, 자동으로 Approve를 하는 기능입니다.
# PR은 2명의 리뷰어의 Approve 후 가능하다는 팀 컨벤션이 있기 때문에 false로 설정했습니다.
request_changes_workflow: false

# PR의 전체적인 변경 사항에 대한 고수준의 요약(summary)을 생성할지 여부입니다.
high_level_summary: true

# 변경된 각 파일에 대한 요약을 생성할지 여부입니다.
# PR이 너무 길어지는 것을 방지하기 위해 비활성화했습니다.
changed_files_summary: false

# 코드의 실행 흐름을 보여주는 시퀀스 다이어그램을 생성할지 여부입니다.
sequence_diagrams: true

# PR에 연결된 이슈(Issue)를 분석하여 리뷰 컨텍스트에 활용할지 여부입니다.
assess_linked_issues: true

# 연관된 다른 이슈를 찾아서 링크할지 여부입니다.
related_issues: false

# 연관된 다른 PR을 찾아서 링크할지 여부입니다.
related_prs: false

# PR에 적절한 레이블(e.g., 'bug', 'enhancement')을 제안할지 여부입니다.
suggested_labels: false

# 제안된 레이블을 자동으로 PR에 적용할지 여부입니다.
auto_apply_labels: false

# 이 PR을 리뷰할 만한 적절한 동료 리뷰어를 추천할지 여부입니다.
suggested_reviewers: false

# 추천된 리뷰어를 자동으로 할당할지 여부입니다.
auto_assign_reviewers: false

# 리뷰 요약에 위트 있는 시(poem)를 포함할지 여부입니다.
# 몇몇 팀원들의 반대가 있었지만, CodeRabbit이 써주는 시가 귀여워서 개인 취향으로 강력 주장해서 활성화시켰습니다.
poem: true

# 특정 파일 경로에 따라 다른 리뷰 지침을 적용합니다.
# 모노레포를 사용하는 프로젝트였기 때문에 각 분야마다 다른 인스트럭션을 작성했습니다.

path_instructions:
- path: Sources/**/*.swift
instructions: |
[Library 기준]
1. 이 코드는 SwiftUI-Kit 라이브러리 코드이므로 범용성, 재사용성, API 일관성을 우선 리뷰해주세요.
2. public API가 직관적이고 SwiftUI 스타일에 맞는지, 네이밍과 Modifier 패턴이 일관적인지 검토해주세요.
3. 라이브러리 사용자가 최소한의 코드로 쉽게 적용할 수 있는 설계인지 확인해주세요.
4. 구현 디테일보다는 API 사용성(API ergonomics), 확장성, 유지보수성을 중심으로 리뷰해주세요.

[Representable]
5. UIViewRepresentable / UIViewControllerRepresentable의 make/update 역할 분리가 명확한지 확인해주세요.
6. update 단계에서 불필요한 작업이 반복되지 않는지, SwiftUI 상태와 UIKit 동기화가 올바른지 검토해주세요.
7. Coordinator가 필요한 경우에만 사용되었는지 확인해주세요.

[Modifier / API]
8. mutating 대신 값 복사 기반 설계가 자연스러운지 확인해주세요.
9. Modifier 네이밍이 SwiftUI 패턴과 일관적인지 검토해주세요.
10. chainable API가 예측 가능하게 동작하는지 검토해주세요.

[View / Component]
11. 특정 앱에 종속되지 않은 범용 컴포넌트인지 확인해주세요.
12. 하드코딩된 값 없이 외부 주입 가능한 구조인지 검토해주세요.
13. 불필요한 리렌더링 유발 요소가 없는지 성능 관점에서 확인해주세요.

[Extension / Helper]
14. 전역 네임스페이스 오염 가능성이 없는지 검토해주세요.
15. 공용 헬퍼 또는 확장 코드가 범용적인 책임만 가지는지 확인해주세요.
16. 특정 컴포넌트 전용 로직이 범용 유틸리티로 새어 나오지 않았는지 검토해주세요.
17. 공용 헬퍼가 과도하게 책임을 가지거나 특정 컴포넌트 로직을 포함하지 않는지 확인해주세요.

- path: Tests/**/*.swift
instructions: |
1. public API 기준으로 테스트가 작성되었는지 확인해주세요.
2. 구현이 아니라 "사용 결과"를 검증하는 테스트인지 검토해주세요.
3. 비동기 테스트 안정성(flaky) 여부를 확인해주세요.

- path: Package.swift
instructions: |
1. Swift Package 구조가 라이브러리 배포에 적절한지 검토해주세요.
2. product / target / dependency 구성이 명확한지 확인해주세요.

# ---------------------------------------------------------------- #
# 자동 리뷰 트리거 설정
# ---------------------------------------------------------------- #
#auto_review:
# # PR이 생성됐을 때
# # `@coderabbitai review`를 코멘트에 입력하면 리뷰를 시작합니다.
# enabled: false
#
# # 이미 리뷰가 진행된 PR에 새로운 커밋이 추가될 때, 변경된 부분에 대해서만 자동으로 리뷰를 진행할지 여부입니다.
# auto_incremental_review: false

# ---------------------------------------------------------------- #
# 채팅 기능 설정
# ---------------------------------------------------------------- #
chat:
# 사용자가 @coderabbitai 태그를 지정하지 않아도 자동으로 답글을 달 수 있도록 설정합니다.
auto_reply: false

# ---------------------------------------------------------------- #
# CodeRabbit의 지식 기반(Knowledge Base) 설정
# ---------------------------------------------------------------- #
knowledge_base:
# 웹 검색을 통해 최신 정보나 문서를 참조할 수 있도록 허용할지 여부입니다.
web_search:
enabled: true

# CodeRabbit이 대화나 리뷰를 통해 학습한 내용을 어디에 저장하고 참조할지 범위를 설정합니다. 'local'은 현재 레포지토리에 한정됨을 의미합니다.
learnings:
scope: local

# 이슈 정보를 참조할 범위를 설정합니다.
issues:
scope: local

# 풀 리퀘스트 정보를 참조할 범위를 설정합니다.
pull_requests:
scope: local
9 changes: 1 addition & 8 deletions .github/workflows/email-notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@
# PR 생성 시 이메일 발송
# PR 병합 시 이메일 발송
# PR 코드리뷰(라인 댓글) 시 이메일 발송
# 이슈 생성 시 이메일 발송
# 불필요한 항목은 출력하지 않음

# 📧 이메일 알림을 위한 GitHub Actions

name: Email Notifications

on:
issues:
types: [opened] # 이슈 생성 시
pull_request:
types: [opened, closed] # PR 생성 및 병합 시
issue_comment:
Expand All @@ -24,6 +21,7 @@ on:

jobs:
notify_by_email:
if: github.actor != 'coderabbitai[bot]'
runs-on: ubuntu-latest

steps:
Expand Down Expand Up @@ -70,11 +68,6 @@ jobs:
LINK="${{ github.event.review.html_url }}"
COMMENT="${{ github.event.review.body }}"

elif [[ "${{ github.event_name }}" == "issues" ]]; then
EVENT_LABEL="이슈 생성"
TITLE="${{ github.event.issue.title }}"
LINK="${{ github.event.issue.html_url }}"

else
echo "event_label=무시됨" >> $GITHUB_OUTPUT
echo "body=지원되지 않는 이벤트입니다." >> $GITHUB_OUTPUT
Expand Down
Loading