목록으로 돌아가기

블로그

Tactic Remote로 코드 리뷰 자동화하기

팀의 풀 리퀘스트 큐에 도달하기 전에 버그, 보안 문제, 품질 문제를 잡아내는 AI 기반 코드 리뷰 워크플로우를 설정하세요.

게시일 태그: 시작 가이드 / code-review / workflow / quality
블로그

이 카테고리의 제품 및 엔지니어링 업데이트를 확인하세요.

카테고리 보기

코드 리뷰는 소프트웨어 품질에 필수적이지만 시간이 많이 소요됩니다. 개발자들은 주당 약 6-8시간을 동료의 코드를 리뷰하는 데 사용합니다 — 기능을 구현하는 데 쓸 수 있는 시간입니다. AI 기반 코드 리뷰는 인간 리뷰어를 대체하지 않지만, 기계적인 부분(버그 포착, 스타일 위반, 누락된 에러 처리)을 처리하여 인간 리뷰어가 아키텍처, 설계, 비즈니스 로직에 집중할 수 있게 합니다.

이 튜토리얼은 Tactic Remote를 사용하여 AI 기반 코드 리뷰 워크플로우를 설정하는 방법을 보여줍니다.

리뷰 워크플로우

설정할 워크플로우는 다음과 같습니다:

  1. 개발자가 피처 브랜치에서 작업을 완료합니다.
  2. 풀 리퀘스트를 만들기 전에 휴대폰에서 Claude Code 리뷰 세션을 시작합니다.
  3. Claude Code가 메인 브랜치 대비 diff를 분석하고 포괄적인 리뷰를 생성합니다.
  4. 개발자가 휴대폰에서 발견 사항을 처리합니다 (수정 승인 또는 예외 기록).
  5. 정리된 코드가 푸시되고 AI 리뷰 요약이 포함된 PR이 생성됩니다.

이를 통해 인간 리뷰에서 발견될 문제의 60-80%를 포착하여 리뷰 사이클 시간을 크게 단축합니다.

1단계: 리뷰 프롬프트 준비

프로젝트 루트에 .claude-review-prompt.md라는 파일을 생성합니다. 이것이 AI 리뷰의 지시 세트 역할을 합니다:

# Code Review Instructions
 
Review all changes on the current branch compared to the `main` branch.
 
## What to Check
 
### Critical Issues (must fix before merge)
 
- **Logic errors**: Code that doesn't do what it claims
- **Security vulnerabilities**: SQL injection, XSS, auth bypasses, credential exposure
- **Data loss risks**: Missing transactions, incorrect cascade deletes, race conditions
- **Breaking changes**: API contract violations, backwards-incompatible modifications
 
### Warnings (should fix, but not blocking)
 
- **Missing error handling**: Uncaught exceptions, unhandled promise rejections
- **Performance concerns**: N+1 queries, unnecessary re-renders, missing memoization
- **Missing validation**: User input not validated before processing
- **Test coverage gaps**: New code paths without corresponding tests
 
### Suggestions (nice to have)
 
- **Readability improvements**: Unclear variable names, complex logic that could be simplified
- **Documentation gaps**: Public APIs without JSDoc/TSDoc comments
- **Potential refactoring**: Duplicated logic, overly long functions
 
## Output Format
 
For each finding, provide:
 
1. **Severity**: CRITICAL / WARNING / SUGGESTION
2. **File**: Exact file path and line numbers
3. **Description**: What the issue is, in one sentence
4. **Explanation**: Why it matters, with context
5. **Fix**: Concrete code suggestion to resolve the issue
 
At the end, provide:
 
- Summary: X critical, Y warnings, Z suggestions
- Overall assessment: Is this branch ready for human review?
 
## What NOT to Flag
 
- Style preferences covered by our linter (ESLint/Prettier handle this)
- Import ordering (automated)
- Whitespace or formatting (automated)
- Type annotations that TypeScript can infer

이 프롬프트는 의도적으로 구체적입니다. 모호한 리뷰 지시는 모호한 리뷰를 만듭니다. 구체적인 지시가 실행 가능한 발견 사항을 만듭니다.

2단계: 휴대폰에서 리뷰 실행

브랜치를 리뷰할 준비가 되면 Tactic Remote를 열고 프로젝트 디렉토리를 가리키는 세션을 시작합니다. 다음을 전송하세요:

Checkout branch feature/user-dashboard.
Follow the review instructions in .claude-review-prompt.md.

Claude Code가 수행하는 작업:

  1. 브랜치를 체크아웃합니다
  2. main 대비 diff를 계산합니다
  3. 리뷰 기준에 따라 변경된 모든 파일을 분석합니다
  4. 구조화된 리뷰 보고서를 출력합니다

diff 크기에 따라 일반적으로 3-8분이 소요됩니다. 완료되면 알림을 받게 됩니다.

3단계: 발견 사항 검토

리뷰 출력은 터미널 뷰에 나타납니다. 일반적인 발견 사항의 예시:

🔴 CRITICAL — src/api/routes/users.ts:47-52

Description: SQL query constructed with string concatenation, vulnerable to injection.

Explanation: The search query parameter is interpolated directly into the SQL
string without parameterization. An attacker could craft a search input that
modifies the query logic, potentially extracting or modifying data.

Fix: Use parameterized query:
  // Before (vulnerable)
  const results = db.query(`SELECT * FROM users WHERE name LIKE '%${search}%'`)

  // After (safe)
  const results = db.query('SELECT * FROM users WHERE name LIKE ?', [`%${search}%`])

각 발견 사항에 대해 휴대폰에서 세 가지 옵션이 있습니다:

수정 적용: Claude Code에 제안된 수정을 구현하도록 프롬프트합니다:

Apply the fix for the SQL injection issue in users.ts:47.

건너뛰기: 발견 사항에 동의하지 않거나 오탐인 경우 나중을 위해 메모하고 넘어갑니다.

토론: 확실하지 않은 경우 Claude Code에 더 많은 컨텍스트를 요청합니다:

Explain the SQL injection risk in more detail. Is this exploitable given
our authentication middleware that runs before this route?

4단계: 자동 수정 적용

많은 발견 사항이 있는 리뷰의 경우 일괄 수정을 적용할 수 있습니다:

Apply fixes for all CRITICAL and WARNING findings from the review.
For each fix, run the relevant tests to verify the fix doesn't break anything.
Report which fixes were applied and which tests passed.

Claude Code가 체계적으로 발견 사항을 처리하며 수정을 적용하고 테스트를 실행합니다. 이것도 휴대폰을 내려놓고 알림을 기다리면 되는 작업입니다.

중요: 커밋하기 전에 적용된 수정을 검토하세요. AI 생성 수정은 대개 정확하지만, "대개"는 프로덕션 코드에 충분하지 않습니다. 터미널 뷰에서 diff를 확인하세요:

Show me the complete git diff of all changes made during this review.

5단계: PR 요약 생성

수정이 적용되고 검증된 후 PR 준비 요약을 생성합니다:

Create a pull request description that includes:
1. What this branch does (based on the commit history)
2. Summary of the AI review findings and how they were addressed
3. Any remaining suggestions that were intentionally deferred
4. Test results

이것을 PR 설명에 포함하세요. 인간 리뷰어에게 코드가 사전 리뷰되었다는 신뢰를 주고 무엇에 집중해야 하는지 알려줍니다.

고급: 지속적 리뷰 세션

장기 피처 브랜치의 경우 PR 시점만이 아닌 정기적으로 리뷰를 실행합니다:

Review all commits since the last review marker.
After completing the review, create a git tag 'last-ai-review' at HEAD.

매일 리뷰를 실행하면 도입 시점에 더 가까운 곳에서 문제를 포착합니다. 일주일간의 개발 후 문제를 발견하는 것보다 수정하기 쉽습니다.

CI/CD와의 통합

AI 리뷰를 공식화하려는 팀은 브랜치가 푸시될 때 자동으로 리뷰 세션을 트리거할 수 있습니다. 워크플로우:

  1. CI 웹훅이 Tactic Remote Mac 컴패니언 앱을 트리거합니다.
  2. 컴패니언 앱이 업데이트된 브랜치에서 Claude Code 세션을 시작합니다.
  3. Claude Code가 리뷰 프롬프트를 실행합니다.
  4. 결과가 풀 리퀘스트에 코멘트로 게시됩니다.

이를 위해서는 Mac 측에서의 스크립팅(컴패니언 앱이 세션 관리를 위한 API를 노출)이 필요하며 고급 통합 문서에 자세히 설명되어 있습니다.

효과 측정

AI 코드 리뷰를 도입한 후 다음 지표를 추적하세요:

  • 리뷰 소요 시간: 인간 리뷰어가 기계적 검사에 소요하는 시간이 줄어들면서 30-50% 감소해야 합니다.
  • 리뷰 vs 프로덕션에서 발견된 이슈: 좌측 이동해야 합니다 — AI 리뷰 중 더 많은 이슈가 잡히고, 프로덕션으로 빠져나가는 이슈가 줄어야 합니다.
  • 리뷰 사이클 타임: 사전 리뷰된 PR이 도착하면서 PR 생성부터 승인까지의 시간이 줄어야 합니다.
  • 개발자 만족도: 리뷰어들이 덜 지루하고 의미 있는 아키텍처 피드백에 더 집중한다고 보고해야 합니다.

AI 코드 리뷰는 인간의 판단을 대체하는 것이 아닙니다. 인간의 판단이 가장 중요한 문제 — 아키텍처, 설계, 비즈니스 로직 — 에 쓰이도록 보장하는 것이며, 오타나 누락된 null 체크를 잡는 데 쓰이지 않도록 하는 것입니다.

단일 프로젝트로 시작하고, 결과에 따라 리뷰 프롬프트를 개선하고, 접근 방식이 보정된 후 팀으로 확장하세요. 좋은 리뷰 프롬프트에 대한 투자는 이를 사용하는 모든 리뷰에서 배당금을 지급합니다.

Tactic Remote 사용해 보기

휴대전화로 코딩 에이전트를 원격 제어하세요

Mac, Windows, Linux 컴퓨터의 Claude Code, Codex 등에 연결하세요. iPhone이나 iPad에서 진행 상황을 확인하고 다음 요청을 보낼 수 있습니다.