> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Code Review 설정

> GitHub, GitLab, Bitbucket, Azure DevOps 저장소를 연결하여 자동화된 AI 기반 코드 리뷰를 받으세요

Git 공급자를 한 번 연결하면 선택한 저장소의 모든 새 풀 리퀘스트가 자동으로 AI 리뷰를 받습니다. Code Review가 처음이라면 먼저 [개요](/ko/guide/code-review/overview)를 읽어보세요.

## 사전 요구 사항

* 저장소 액세스 권한이 있는 GitHub, GitLab, Bitbucket, 또는 Azure DevOps 계정
* 조직의 앱 설치 또는 액세스 토큰 생성 권한
* CloudThinker 워크스페이스

## 저장소 연결

<Steps>
  <Step title="Code Review 열기">
    탐색 메뉴에서 **Code Review**로 이동하세요.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_1_onboarding.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=83c99952b3e1487b3fd17bbfa020a6c0" alt="Code Review 온보딩" width="2516" height="1714" data-path="images/code-review/setup_step_1_onboarding.png" />
    </Frame>
  </Step>

  <Step title="설정 시작">
    **Get Started with Code Review**를 클릭하여 설정 마법사를 여세요.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/eiDPB1agMNoCjinj/images/code-review/setup_step_1_setuprovider.png?fit=max&auto=format&n=eiDPB1agMNoCjinj&q=85&s=aa3386c115e30a917d25184c0bca137e" alt="Code Review 설정 - 공급자 선택" width="1914" height="952" data-path="images/code-review/setup_step_1_setuprovider.png" />
    </Frame>
  </Step>

  <Step title="공급자 선택">
    Git 공급자로 **GitHub**, **GitLab**, **Bitbucket**, 또는 **Azure DevOps**를 선택하세요.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_1_connectprovider.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=80d3229aa3254ac1d2a3aaf70b44cb1c" alt="Git 공급자 선택" width="3024" height="1714" data-path="images/code-review/setup_step_1_connectprovider.png" />
    </Frame>
  </Step>

  <Step title="인증">
    <Tabs>
      <Tab title="GitHub">
        **Install GitHub App**을 클릭하여 GitHub App 설치를 시작하세요.

        GitHub가 조직을 선택하고 저장소 액세스를 허용하는 페이지로 리디렉션합니다. 승인 후 마법사가 자동으로 재개됩니다. 웹훅은 GitHub App에 의해 등록됩니다 — 수동 웹훅 설정이 필요 없습니다.

        <Warning>
          GitHub 조직에 CloudThinker를 설치하려면 **Organization Owner** 권한이 필요합니다. 소유자가 아니라면 소유자에게 앱 설치를 요청하세요.
        </Warning>
      </Tab>

      <Tab title="GitLab (OAuth)">
        **Connect to GitLab**을 클릭하여 OAuth로 인증하세요. GitLab.com 사용자에게 가장 간단한 옵션입니다.

        연결 후 [웹훅을 수동으로 설정](#웹훅-설정)하세요.
      </Tab>

      <Tab title="GitLab (Access Token)">
        자체 호스팅 GitLab 인스턴스나 수동 토큰 관리를 선호하는 경우 **Project Access Token** 또는 **Group Access Token**을 사용하세요. 코멘트가 봇 사용자 명의로 게시되고, 토큰이 특정 프로젝트나 그룹으로 범위가 제한되며, 액세스를 쉽게 취소할 수 있습니다. CloudThinker는 자체 호스팅 GitLab **버전 12.0 이상**을 지원합니다.

        **연결 세부 정보:**

        1. **GitLab URL**: GitLab.com의 경우 `https://gitlab.com`, 자체 호스팅 인스턴스의 경우 인스턴스 URL(예: `https://gitlab.example.com`) 입력
        2. **Token Type**: **Project Access Token**(단일 프로젝트) 또는 **Group Access Token**(그룹 내 모든 프로젝트) 선택
        3. **Access Token**: 생성한 토큰 붙여넣기

        <Accordion title="Project Access Token 생성 방법">
          1) 프로젝트 → **Settings** → **Access Tokens**로 이동
          2) **Add new token** 클릭
          3) 역할을 `Developer` 이상으로 설정
          4) 범위 선택: `api`
          5) 만료일 설정(권장)
          6) 생성된 토큰 복사
        </Accordion>

        <Accordion title="Group Access Token 생성 방법">
          1. 그룹 → **Settings** → **Access Tokens**로 이동
          2. **Add new token** 클릭
          3. 역할을 `Developer` 이상으로 설정
          4. 범위 선택: `api`
          5. 만료일 설정(권장)
          6. 생성된 토큰 복사
        </Accordion>

        <Warning>
          토큰은 코드 리뷰 코멘트를 게시하기 위해 **Developer** 역할 이상이어야 합니다. Guest 및 Reporter 역할은 머지 리퀘스트에 코멘트를 달 수 없습니다.
        </Warning>

        연결 후 [웹훅을 수동으로 설정](#웹훅-설정)하세요.
      </Tab>

      <Tab title="Bitbucket (OAuth)">
        **Connect to Bitbucket**을 클릭하여 OAuth로 인증하세요. Bitbucket이 워크스페이스 액세스를 허용하는 페이지로 리디렉션합니다.

        웹훅은 자동으로 등록됩니다 — 수동 웹훅 설정이 필요 없습니다.
      </Tab>

      <Tab title="Bitbucket (Access Token)">
        Bitbucket 액세스 토큰을 사용하여 연결하세요. 액세스 수준에 맞는 토큰 유형을 선택하세요:

        | 토큰 유형                       | 범위             | 필요 요금제  |
        | --------------------------- | -------------- | ------- |
        | **Workspace Access Token**  | 워크스페이스의 모든 저장소 | Premium |
        | **Project Access Token**    | 프로젝트의 모든 저장소   | Premium |
        | **Repository Access Token** | 단일 저장소         | Free    |

        **연결 세부 정보:**

        1. **Token Type**: 드롭다운에서 토큰 범위 선택
        2. **Bitbucket Workspace**: 워크스페이스 슬러그 입력(URL에서: `bitbucket.org/<workspace>/repo`)
        3. **Repository Slug**(저장소 토큰만): 저장소 슬러그 입력
        4. **Access Token**: 생성한 토큰 붙여넣기

        먼저 **Validate Token**을 클릭하여 액세스를 확인한 후 **Connect**를 클릭하여 완료하세요.

        **필요한 토큰 권한:**

        * Account: Read
        * Repositories: Read, Write
        * Pull requests: Read, Write
        * Webhooks: Read and write
        * Pipelines: Read, Write

        <Accordion title="Workspace Access Token 생성 방법">
          1. **Workspace** → **Settings** → **Access tokens**로 이동
          2. **Create workspace access token** 클릭
          3. 위에 나열된 필요한 권한 활성화
          4. 만료일 설정(권장)
          5. 생성된 토큰 복사
        </Accordion>

        <Accordion title="Project Access Token 생성 방법">
          1. **Project** → **Project settings** → **Access tokens**로 이동
          2. **Create project access token** 클릭
          3. 위에 나열된 필요한 권한 활성화
          4. 만료일 설정(권장)
          5. 생성된 토큰 복사
        </Accordion>

        <Accordion title="Repository Access Token 생성 방법">
          1. **Repository** → **Repository settings** → **Access tokens**로 이동
          2. **Create Repository Access Token** 클릭
          3. 위에 나열된 필요한 권한 활성화
          4. 만료일 설정(권장)
          5. 생성된 토큰 복사
        </Accordion>

        웹훅은 자동으로 등록됩니다 — 수동 웹훅 설정이 필요 없습니다.
      </Tab>

      <Tab title="Azure DevOps">
        Azure DevOps는 인증에 \*\*Personal Access Token (PAT)\*\*을 사용합니다.

        **연결 세부 정보:**

        1. **Organization URL**: Azure DevOps 조직 URL 입력(예: `https://dev.azure.com/your-org` 또는 `https://your-org.visualstudio.com`)
        2. **Project**: 저장소가 포함된 프로젝트 이름 입력
        3. **Personal Access Token**: 생성한 PAT 붙여넣기

        먼저 **Validate PAT**를 클릭하여 액세스를 확인한 후 **Connect**를 클릭하여 완료하세요.

        **필요한 PAT 범위:**

        * `Build` — Read
        * `Code` — Read & Write
        * `Pull Request Threads` — Read & Write

        <Accordion title="PAT 생성 방법">
          1. **Azure DevOps** → **User Settings**(오른쪽 상단) → **Personal Access Tokens**로 이동
          2. **New Token** 클릭
          3. 조직과 만료일 설정
          4. 위에 나열된 범위 선택
          5. **Create** 클릭 후 생성된 토큰 복사
        </Accordion>

        PAT는 생성 시 설정한 날짜에 만료됩니다. 리뷰 중단을 방지하기 위해 만료 전에 PAT를 교체하세요.

        연결 후 [웹훅을 수동으로 설정](#웹훅-설정)하세요.
      </Tab>
    </Tabs>
  </Step>

  <Step title="저장소 선택">
    코드 리뷰에 활성화할 저장소를 선택하고 **Complete**를 클릭하여 설정을 완료하세요.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_1_select_repo.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=d92652e03344c67c9bddf81b2a039a88" alt="저장소 선택" width="3024" height="1714" data-path="images/code-review/setup_step_1_select_repo.png" />
    </Frame>

    설정 후 저장소 설정에서 자동 리뷰, [리뷰 모드](#리뷰-모드), [파이프라인 모니터링](#파이프라인-모니터링), [필터](#필터-설정)를 저장소별로 조정할 수 있습니다.

    **성공 기준:** Code Review 대시보드에 저장소가 표시됩니다 — CloudThinker가 이제 풀 리퀘스트와 머지 리퀘스트를 모니터링합니다.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_1_complete_setup.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=af497e327fc84660e2878e419ab251a3" alt="설정 완료" width="3024" height="1714" data-path="images/code-review/setup_step_1_complete_setup.png" />
    </Frame>
  </Step>
</Steps>

## 웹훅 설정

GitHub와 Bitbucket은 웹훅을 자동으로 등록하므로 별도 작업이 필요 없습니다. GitLab과 Azure DevOps는 수동 웹훅 설정이 필요합니다:

<Tabs>
  <Tab title="GitLab">
    GitLab 계정을 연결한 후 GitLab 프로젝트 또는 그룹에서 웹훅을 설정하세요:

    1. 프로젝트/그룹 → **Settings** → **Webhooks**로 이동
    2. 설정 마법사에 표시된 웹훅 URL 붙여넣기
    3. 제공된 시크릿 토큰 입력
    4. 다음 트리거 활성화:
       * **Merge request events**
       * **Comments**
       * **Pipeline events**
    5. **Add webhook** 클릭
  </Tab>

  <Tab title="Azure DevOps">
    Azure DevOps 프로젝트를 연결한 후 Azure DevOps에서 **4개의 별도 서비스 훅**을 생성하세요:

    1. **Project Settings** → **Service hooks**로 이동
    2. **Create subscription**을 클릭하고 **Web Hooks** 선택
    3. 각 이벤트에 대해 훅 하나씩 생성:
       * **Pull request created**
       * **Pull request updated**
       * **Pull request commented on**
       * **Build completed**
    4. 각 훅에 설정 마법사에 표시된 웹훅 URL 붙여넣기
    5. 시크릿 토큰을 비밀번호로 사용하여 **Basic authentication** 사용(사용자명은 비워두세요)
  </Tab>
</Tabs>

## 풀 리퀘스트 생성

<Steps>
  <Step title="저장소 열기">
    GitHub, GitLab, Bitbucket, 또는 Azure DevOps에서 연결된 저장소로 이동하세요.
  </Step>

  <Step title="풀 리퀘스트 생성">
    코드 변경 사항이 포함된 새 풀 리퀘스트를 생성하세요. CloudThinker가 PR을 감지하고 diff를 분석하여 요약 코멘트와 인라인 코멘트를 게시합니다 — 일반적으로 1\~2분 내에, 수동 트리거 없이.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_2_create_pr.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=db576aa427acdff338394404cb24ae4a" alt="풀 리퀘스트 생성" width="3024" height="1714" data-path="images/code-review/setup_step_2_create_pr.png" />
    </Frame>

    발견 항목에는 버그 탐지(로직 오류, 널 참조, 경쟁 조건), 보안 취약점(인젝션 위험, 하드코딩된 시크릿), 코드 품질(네이밍, 복잡도, 중복), 성능(비효율적인 쿼리, N+1 패턴)이 포함됩니다.
  </Step>
</Steps>

## 발견 항목 검토

<Steps>
  <Step title="CloudThinker에서 상태 확인">
    CloudThinker 대시보드에서 모든 풀 리퀘스트의 리뷰 상태를 확인하세요.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_3_code_review_status.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=18d31bb9489ef5419dc34e93f08c85cc" alt="코드 리뷰 상태" width="3024" height="1714" data-path="images/code-review/setup_step_3_code_review_status.png" />
    </Frame>
  </Step>

  <Step title="Git 공급자에서 발견 항목 확인">
    풀 리퀘스트를 열어 AI가 생성한 요약과 인라인 코드 코멘트를 확인하세요. 각 코멘트에는 심각도 수준(Critical, High, Medium, Low), 문제 설명, 수정 제안이 포함됩니다.

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_3_view_summary.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=578f0dd82456c64c68c8785c04403f14" alt="요약 보기" width="3024" height="1714" data-path="images/code-review/setup_step_3_view_summary.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/cloudthinker/qPO13J0Sg_1q5VB1/images/code-review/setup_step_3_view_findings.png?fit=max&auto=format&n=qPO13J0Sg_1q5VB1&q=85&s=b11c30f154836e21ec5523361a36f786" alt="발견 항목 보기" width="3024" height="1714" data-path="images/code-review/setup_step_3_view_findings.png" />
    </Frame>

    PR에서 `@cloudthinker-ai`에게 답글을 달아 질문하거나, 재리뷰를 요청하거나, 리뷰를 건너뛸 수 있습니다 — [mention commands](/ko/guide/code-review/mention-commands) 참고.
  </Step>
</Steps>

## 리뷰 모드

저장소별로 리뷰 모드를 설정하고 저장소 설정에서 언제든지 전환할 수 있습니다:

| 모드           | 설명                                                    |
| ------------ | ----------------------------------------------------- |
| **Fast**     | 빠른 분석, 낮은 비용. 작은 PR과 빠른 피드백에 적합합니다.                   |
| **Advanced** | 보안, 성능, 정확성, 패턴에 대한 전문 에이전트 분할 심층 분석. 중요한 저장소에 최적입니다. |

## 파이프라인 모니터링

CloudThinker는 CI/CD 파이프라인 실패를 모니터링합니다. 파이프라인이 실패하면 CloudThinker가:

1. 실패한 파이프라인 실행을 감지합니다
2. 실패한 작업 로그를 가져와 분석합니다
3. 발견 항목과 수정 제안을 PR에 직접 게시합니다

파이프라인 모니터링은 워크스페이스별로 켜고 끌 수 있으며 **기본적으로 활성화**되어 있습니다. Azure DevOps의 경우 CloudThinker는 풀 리퀘스트 이벤트(`git.pullrequest.created`, `git.pullrequest.updated`)와 함께 `build.complete` 이벤트를 모니터링합니다.

## 필터 설정

저장소별 필터를 사용하여 CloudThinker가 리뷰하는 PR과 MR을 제어하세요:

* **레이블 필터**: 특정 레이블이 있는 PR 포함 또는 제외
* **작성자 필터**: 특정 작성자 포함 또는 제외(봇 작성자 제외에 유용)
* **브랜치 필터**: 특정 패턴과 일치하는 브랜치 포함 또는 제외(대상 브랜치, 즉 병합되는 브랜치 기준으로 필터링)

**제외** 필터가 먼저 확인됩니다. **포함** 필터는 모두 통과해야 합니다. 제외 필터와 일치하는 PR은 **FILTERED**로 표시되고 완전히 건너뜁니다.

## 증분 리뷰

열린 PR에 새 커밋을 푸시하면 CloudThinker가 **증분 리뷰**를 수행합니다 — 전체 PR이 아닌 새로운 변경 사항만 분석합니다. 이를 통해 리뷰가 빠르게 유지되고 실제로 변경된 내용에 집중할 수 있습니다.

## 다음 단계

<CardGroup cols={2}>
  <Card title="Mention commands" icon="at" href="/ko/guide/code-review/mention-commands">
    PR 코멘트에서 리뷰 봇과 상호작용 — 재리뷰, 질문, 또는 리뷰 건너뛰기
  </Card>

  <Card title="리더보드" icon="trophy" href="/ko/guide/code-review/leaderboard">
    팀 리뷰 활동과 코드 품질 개선을 시간별로 추적하세요
  </Card>

  <Card title="Convention rules" icon="list-check" href="/ko/guide/code-review/convention-rules">
    저장소에 이미 있는 파일로 팀의 코딩 컨벤션을 리뷰에 가르치세요
  </Card>

  <Card title="알림" icon="bell" href="/ko/guide/notifications">
    코드 리뷰 발견 항목을 전달할 위치를 설정하세요
  </Card>
</CardGroup>
