AI 코드 리뷰, 이제는 직접 도입해봤다

대(大) AI 시대, 나도 드디어 AI 코드 리뷰를 적용해보기로 결심했다.
사실 다양한 방법들이 있었지만, 가장 많이 사용되고 익숙한 ChatGPT를 활용하기로 했다.

이번에 내가 사용한 주요 도구는 다음과 같다.

  1. GitHub Actions

  2. OpenAI GPT API

  3. anc95/ChatGPT-CodeReview@main

관련 정보는 정말 넘쳐났다.
검색만 조금 해봐도 적용 방법에 대한 친절한 설명들이 이미 잘 정리되어 있었다.


GPT API 키 발급하기

AI 코드 리뷰를 적용하기 위해 가장 먼저 해야 할 일은 GPT API 키 발급이다.

1. OpenAI 로그인


2. API 키 페이지로 이동

  • GPT-API-platform GPT-API 플랫폼 링크로 접속한다.
  • 이 전에 기본 세팅(개인/회사, 사용 목적 등)을 요구할 수 있으니 간단한 설정을 먼저 완료하자.
  • 이후 API keys에 들어가서 셋팅을 하면 된다.


3. 비밀 키 생성

  • 페이지에 접속하면 "Create new secret key" 버튼이 보인다.
  • 클릭해서 비밀 키(Secret Key) 를 생성한다.
    👉 절대로 이 키는 외부에 노출되지 않도록 주의할 것!
    해당 키는 꼭 기억해야한다.
  • 생성 후에는 결제 카드 등록을 미리 해두는 것을 추천한다.
    (무료 크레딧도 있지만, 일정 이상 사용 시 과금 발생)

2. GitHub Action 셋팅

1. 브랜치 만들기
새로운 브랜치를 만든다. 기존 브랜치를 사용해도 무방하다.


2. 토큰 환경변수 설정

① 레포지토리의 Settings 메뉴로 이동한다.

② 좌측 메뉴의 Secrets and variables를 클릭한다.

Actions 항목을 선택한다.

④ 앞서 발급받은 OpenAI의 API 키를 등록한다.


3. YML 파일 작성

/.github/workflows/code_review_from_chatgpt.yml 경로에 yml 파일을 생성한다. (파일명 자유)

필요한 옵션들은 공식 문서에서 확인할 수 있다.


4. PR 생성 및 GitHub Action 실행 확인

설정이 완료되었다면 PR을 생성한다. 제대로 설정되었다면 GitHub Action이 자동으로 실행되는 것을 확인할 수 있다.


🔥 핵심 옵션 간단 정리

옵션 이름설명
LANGUAGEChatGPT가 리뷰를 작성할 언어 (예: Korean, English)
MODEL사용할 OpenAI 모델 (예: gpt-3.5-turbo, gpt-4)
PROMPTChatGPT에게 주는 기본 지시 문구
max_tokensChatGPT 응답의 최대 길이 (클수록 더 많은 내용을 리뷰함)
MAX_PATCH_LENGTH리뷰할 코드 변경(diff)의 최대 크기 제한
IGNORE_PATTERNS리뷰에서 제외할 파일 패턴 (예: *.md, /node_modules/**/*)
INCLUDE_PATTERNS리뷰에 포함할 파일 패턴 (예: *.js, *.ts)
  • LANGUAGE : 영어로 하면 더 정확한 리뷰가 가능하지만, 한국어(Korean)로 설정했다.
  • MODEL : 최신이며 품질이 뛰어난 gpt-4 모델을 선택했다. 원래는 o1-preview를 원했으나 JSON 형식 미지원으로 사용할 수 없었다.
  • PROMPT : 코드 리뷰에서 가장 중요한 설정이다. 자세한 내용은 다음 글에서 다룰 예정이다.
  • max_tokens : 많으면 비용 증가, 적으면 리뷰의 품질 저하가 발생할 수 있어 적절한 설정이 중요하다.
  • MAX_PATCH_LENGTH : 너무 긴 코드 변경 사항은 리뷰되지 않으므로 적당한 제한을 두는 것이 좋다.
  • IGNORE_PATTERNS : 중요한 정보를 포함한 파일이나 불필요한 파일을 제외하여 토큰 사용량을 관리할 수 있다.
  • INCLUDE_PATTERNS : 리뷰 대상을 명확히 지정하여 효율성을 높인다.

결과 및 개선 방향

리뷰 결과가 만족스럽지는 않았다.
불필요한 리뷰가 많았으며, 이미 존재하는 테스트 코드가 있음에도 테스트를 추가하라는 등의 부정확한 리뷰도 있었다.
다음 글에서는 프롬프트를 개선해 리뷰 품질을 높이는 방법을 다뤄볼 예정이다.

profile
뒷-끝 있는 개-발자

0개의 댓글