Skip to content

[CHORE] Gemini Code Review 인라인 코멘트 방식으로 개선#15

Merged
duthd3 merged 2 commits into
developfrom
chore/#9
Apr 24, 2026
Merged

[CHORE] Gemini Code Review 인라인 코멘트 방식으로 개선#15
duthd3 merged 2 commits into
developfrom
chore/#9

Conversation

@khyeji98
Copy link
Copy Markdown
Collaborator

@khyeji98 khyeji98 commented Apr 21, 2026

Summary

  • 변경된 *.swift diff를 라인 단위로 파싱해 [LINE N] / [CTX N] / [DEL] 마커로 어노테이션 후 Gemini에게 전달
  • Gemini 응답을 responseMimeType: application/json으로 강제해 summary + comments[](path/line/code_snippet/body) 구조로 수신
  • valid_lines.json + line_content_map.json 기반 스냅 로직(정확 매치 → code_snippet 매치 → ±5 라인 근접) 추가, 유효 라인에만 코멘트 게시
  • PR 하단 단일 이슈 코멘트 대신 pulls.createReview인라인 리뷰 코멘트 방식으로 전환
  • 프롬프트를 Swift 6 / SwiftUI / TCA 1.25 / Tuist 4 멀티모듈 Clean Architecture 스택에 맞게 전면 재작성 (모듈 의존성 방향, Action 네이밍, Effect.run 캡처, Store.scope, SubView 규칙, guard/final/private 등)
  • P1~P5 심각도 태그 도입: Reducer heavy work·force unwrap은 P1, 의존성 역행·@ObservableState 전체 캡처는 P2, Action 네이밍 위반은 P3, View suffix·Spacer 남용은 P4, 오타는 P5

Review Example

실제 워크플로 실행 시 PR의 해당 코드 라인에 아래와 같은 인라인 코멘트가 달린다.

🟡 **[P3] Minor**

TCA Action은 '발생한 사건'을 서술해야 합니다. 'performLogin'은 의도된 효과 표현이므로 버튼 탭 이벤트로 고쳐주세요.

```suggestion
      case loginButtonTapped
```
🟠 **[P2] Major**

`Effect.run` 클로저가 `state` 전체를 캡처하면 `@ObservableState`의 registrar가 메인 액터 밖으로 나가 런타임 이슈가 발생할 수 있습니다. 필요한 값만 추출 후 캡처해주세요.

```suggestion
    case .saveButtonTapped:
      let information = state.information
      return .run { send in
        await send(.delegate(.saved(information)))
      }
```

Test plan

  • .swift 변경을 포함한 드래프트 PR을 develop 대상으로 띄워 워크플로가 성공하는지 확인
  • 각 지적이 PR 하단 단일 코멘트가 아닌 해당 라인 인라인 코멘트로 붙는지 확인
  • 코멘트 첫 줄이 🔴/🟠/🟡/🔵/⚪ 심각도 태그로 시작하는지 확인
  • performLogin 같은 의도 기반 Action 네이밍을 의도적으로 심었을 때 P3로 지적되는지 확인
  • .swift 변경이 없는 PR에서는 skip_review=true로 Gemini 호출이 생략되는지 확인

Closes #9

🤖 Generated with Claude Code

khyeji98 and others added 2 commits April 16, 2026 12:53
PR 시 변경된 Swift 코드에 대해 Gemini AI 자동 리뷰를 수행하는
GitHub Actions 워크플로를 추가한다.
TCA + Clean Architecture 멀티모듈 구조에 맞게 프롬프트를 작성했다.

Closes #9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
diff 라인 어노테이션 기반 파싱을 추가해 Gemini가
[LINE N] 라인에만 코멘트하도록 하고, JSON 응답을
pulls.createReview로 인라인 게시한다. 프롬프트는
Swift 6 / SwiftUI / TCA 1.25 / 멀티모듈 Clean
Architecture 컨벤션과 P1~P5 심각도 기준에 맞게
전면 재작성
@khyeji98 khyeji98 requested a review from duthd3 April 21, 2026 05:15
Copy link
Copy Markdown
Collaborator

@duthd3 duthd3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

심각도 상태 표시 해주는거 너무 좋아요! 고생하셨어요

@khyeji98 khyeji98 self-assigned this Apr 21, 2026
@duthd3 duthd3 merged commit ebe2377 into develop Apr 24, 2026
1 check passed
@khyeji98 khyeji98 deleted the chore/#9 branch May 12, 2026 18:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants