From 207581ec8923e934a45030fc20f2912753792ea3 Mon Sep 17 00:00:00 2001 From: indextrown Date: Tue, 7 Apr 2026 18:21:30 +0900 Subject: [PATCH 1/4] =?UTF-8?q?ci:=20coderabbit=20=EC=A7=80=EC=B9=A8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .coderabbit.yaml | 145 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 .coderabbit.yaml diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..92d9e83 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,145 @@ +# AI가 응답할 때 사용할 기본 언어를 설정합니다. (예: ko-KR, en-US) +language: "ko-KR" + +# 안정성 우선, 실험 기능 OFF +early_access: false + +# AI의 페르소나와 응답 톤앤매너를 상세하게 지시합니다. 최대 200자까지 작성할 수 있습니다. +tone_instructions: > + 당신은 iOS 개발자의 성장을 돕는 시니어 엔지니어입니다. 목표는 코드 품질 개선을 통해 개발자가 한 단계 성장하도록 돕는 것입니다. + 1. 피드백은 명확하고 구체적으로 작성하며, Swift/iOS 관점에서 문제의 원인과 개선 방법을 제시하세요. + 2. 리뷰는 교육적으로 작성하고, 관련 개념과 Apple 공식 문서 또는 WWDC 자료를 함께 추천하세요. + 3. SwiftUI, UIKit bridging, API 설계 관점에서 명확하고 구체적으로 작성하세요. + 4. 단순한 지적보다 라이브러리 품질, 확장성, 사용성 개선 중심으로 제안하세요. + 5. public API의 일관성, 네이밍, 문서화, 재사용성을 중요하게 리뷰하세요. + 6. 비판보다 개선 중심의 제안을 우선하세요. + 7. 칭찬은 짧고 위트 있게 전달하세요. + +# 코드 리뷰 기능 세부 설정 +reviews: + # 리뷰의 전반적인 스타일을 설정합니다. 'chill'은 비교적 덜 엄격하고 부드러운 톤을 의미합니다. + profile: "chill" + + # 리뷰 시작했다는 확인 메시지 제거 + show_in_progress_messages: 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 From 52e8f93754e7811fc1d722c90b51165c9954f6ce Mon Sep 17 00:00:00 2001 From: indextrown Date: Tue, 7 Apr 2026 18:30:17 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20issue=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=8B=9C=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EB=B0=9C=EC=86=A1=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/email-notify.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/email-notify.yml b/.github/workflows/email-notify.yml index 71f0e03..d5ace8e 100644 --- a/.github/workflows/email-notify.yml +++ b/.github/workflows/email-notify.yml @@ -3,7 +3,6 @@ # PR 생성 시 이메일 발송 # PR 병합 시 이메일 발송 # PR 코드리뷰(라인 댓글) 시 이메일 발송 -# 이슈 생성 시 이메일 발송 # 불필요한 항목은 출력하지 않음 # 📧 이메일 알림을 위한 GitHub Actions @@ -11,8 +10,6 @@ name: Email Notifications on: - issues: - types: [opened] # 이슈 생성 시 pull_request: types: [opened, closed] # PR 생성 및 병합 시 issue_comment: @@ -70,11 +67,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 From eceeea31e3dcb77b4b216ef05cf43c2f696da2ef Mon Sep 17 00:00:00 2001 From: indextrown Date: Tue, 7 Apr 2026 18:39:55 +0900 Subject: [PATCH 3/4] =?UTF-8?q?ci:=20coderabbit=20=EC=A7=80=EC=B9=A8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .coderabbit.yaml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 92d9e83..ad948f3 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -7,21 +7,20 @@ early_access: false # AI의 페르소나와 응답 톤앤매너를 상세하게 지시합니다. 최대 200자까지 작성할 수 있습니다. tone_instructions: > 당신은 iOS 개발자의 성장을 돕는 시니어 엔지니어입니다. 목표는 코드 품질 개선을 통해 개발자가 한 단계 성장하도록 돕는 것입니다. - 1. 피드백은 명확하고 구체적으로 작성하며, Swift/iOS 관점에서 문제의 원인과 개선 방법을 제시하세요. - 2. 리뷰는 교육적으로 작성하고, 관련 개념과 Apple 공식 문서 또는 WWDC 자료를 함께 추천하세요. - 3. SwiftUI, UIKit bridging, API 설계 관점에서 명확하고 구체적으로 작성하세요. - 4. 단순한 지적보다 라이브러리 품질, 확장성, 사용성 개선 중심으로 제안하세요. - 5. public API의 일관성, 네이밍, 문서화, 재사용성을 중요하게 리뷰하세요. - 6. 비판보다 개선 중심의 제안을 우선하세요. - 7. 칭찬은 짧고 위트 있게 전달하세요. + 1. 피드백은 명확하고 구체적으로 작성하며, 문제의 원인과 개선 방법을 제시하세요. + 2. 리뷰는 교육적이어야 하며, 관련 개념과 Apple 공식 문서 또는 WWDC 자료를 함께 추천하세요. + 3. 비판보다 개선 중심의 제안을 우선하세요. + 4. 칭찬은 짧고 위트 있게 전달하세요. # 코드 리뷰 기능 세부 설정 reviews: # 리뷰의 전반적인 스타일을 설정합니다. 'chill'은 비교적 덜 엄격하고 부드러운 톤을 의미합니다. profile: "chill" - - # 리뷰 시작했다는 확인 메시지 제거 - show_in_progress_messages: false + + # 리뷰 진행/상태 메시지 최소화 + review_status: false + commit_status: false + in_progress_fortune: false # CodeRabbit의 코멘트를 모두 `resolve`하면, 자동으로 Approve를 하는 기능입니다. # PR은 2명의 리뷰어의 Approve 후 가능하다는 팀 컨벤션이 있기 때문에 false로 설정했습니다. From 2757386fd4b811753c18948585b9d4ac74d31b3a Mon Sep 17 00:00:00 2001 From: indextrown Date: Tue, 7 Apr 2026 18:57:25 +0900 Subject: [PATCH 4/4] =?UTF-8?q?ci:=20coderabbit=20=EB=8C=93=EA=B8=80=20?= =?UTF-8?q?=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=95=8C=EB=A6=BC=20=EB=AC=B4?= =?UTF-8?q?=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/email-notify.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/email-notify.yml b/.github/workflows/email-notify.yml index d5ace8e..75d0354 100644 --- a/.github/workflows/email-notify.yml +++ b/.github/workflows/email-notify.yml @@ -21,6 +21,7 @@ on: jobs: notify_by_email: + if: github.actor != 'coderabbitai[bot]' runs-on: ubuntu-latest steps: