Chat GPT한테 코드리뷰 시켰습니다.. (feat. Github Action)

전병민·2023년 3월 15일
215

실험실

목록 보기
2/2
post-thumbnail
post-custom-banner

이 글은 더이상 관리되지 않습니다. AI와 함께 코딩하는 것에 대해 더 알아보고 싶다면 아래의 리스트를 확인해보세요!

서론

개인 프로젝트를 진행하는 것은 정말 고역입니다. 저에게 무엇보다 가장 필요한 것은 동료들의 따뜻한 코드 리뷰가 아닐까 싶은데요. ChatGPT-CodeReview 를 이용하여 ChatGPT 에게 코드리뷰를 받아본 후기를 공유합니다.

목표

Github Action을 이용해서 Chat GPT한테 Code Review 시키기




OPEN API Key

openai api key

Chat GPT가 당신과 놀아주길 바란다면 API key 가 필요합니다. OPENAI API에서 로그인하고 설정에서 API Key 를 생성합시다. secret key 를 깃허브 리파지토리에 등록해야 하니 복사해두세요.

OPEN AI API는 무료가 아닙니다.

github action secret

이제 Chat GPT를 부려먹을 리파지토리나 조직의 설정에 들어가서 왼쪽 사이드 바에서 Secrets and variables 를 선택합니다. New repository secret 버튼을 클릭하여 이름을 OPENAI_API_KEY 로 입력하고 secret에 복사해둔 API key 를 붙여넣어주세요. (아래 사진을 참고해주세요.)

Github Action

사용할 액션은 중국인 개발자가 제작한 anc95/ChatGPT-CodeReview 입니다만, 찾아보면 더 많은 액션과 앱이 있습니다. 뭐가 더 좋은지 비교해서 저한테 알려주세요!

동작 방식

그래도 어떻게 돌아가는지 대략적으로라도 알면 좋을 것 같습니다. 아래는 코드를 보고 간추려본 동작 방식입니다. 이해에 도움이 되시면 좋겠네요.

새로운 워크플로우 생성

# .github/workflows/cr.yml 파일 생성

name: Code Review

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: anc95/ChatGPT-CodeReview@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          LANGUAGE: Korean

secret 이름을 다르게 설정했다면 OPENAI_API_KEY 대신 해당 이름을 넣어주세요.

테스트

준비는 끝났습니다. main에 머지하고 테스트 PR을 올려보겠습니다!

훌륭합니다. 자동으로 리뷰어도 등록하고 변경 사항마다 적당한 코드리뷰를 진행해주는 모습입니다. 앗, 근데 한국어로 코드리뷰를 하지 않네요. 이슈에도 해당 문제가 등록되어 있더군요.

다국어를 지원하지 않는 문제 해결

분명 yml 파일에 LANGUAGE: Korean 로 설정했는데 말이죠. 뭐가 문제일까요. 코드에서 env 사용하는 부분을 찾아보았습니다. 백틱이 아니라 작은 따옴표를 사용해서 오작동했던 것이었습니다. 문제를 해결하고 PR을 올린 뒤 잠에 들었습니다. 아침에 확인해보니 머지가 되어 있더군요.

어떤 내용을 리뷰해주는가?

변경사항 브리핑

구체적으로 어떤 부분이 변경되었고 삭제되었고 추가되었는지 상세하게 브리핑해줍니다.

버그와 개선 방향

변경된 파일의 코드를 분석하고 버그와 개선 방향을 제시해줍니다. 상당한 이점이지요. 하지만 리파지토리 전체를 보고 분석하는 것은 아니기 때문에 모듈들이 어떻게 사용될 수 있는지는 전혀 알지 못합니다. 위 사진의 예시에서도 저는 Button 컴포넌트 내부적으로 isLoading 상태일 때 항상 event를 제거하는 코드가 있지만 이를 알지못한 상태로 코드 리뷰를 한 것을 확인할 수 있었습니다.

synchronize

PR을 올린 이후 커밋을 해서 PR의 상태가 변하는 것을 Github Action 에서는 synchronize 이벤트라고 말합니다. ChatGPT-CodeReview Readme에는 어째서인지 언급도 하지 않지만 코드를 살펴보면 확실히 이 synchronize 를 지원하는 것을 확인할 수 있습니다. 여기서 더 자세히 확인할 수 있습니다.

README의 사용법에는 이벤트 type 에 synchronize 대신 reopened 가 있었습니다. 만약 제가 작성한 yml 로 문제가 발생한다면 README의 내용을 따라가시기 바랍니다.

테스트 커밋을 추가해보았고 PR의 상태가 변했습니다. Code Review action이 실행되었고 새롭게 변경된 파일들에 코드 리뷰가 진행된 것을 확인할 수 있었습니다.




후기

한계

  • 현재는 삭제된 파일, 이름만 변경된 파일, 카피된 파일 전부 코드 리뷰가 진행됩니다. 사실 정말 필요없는 작업이죠. 관련된 이슈를 직접 남겨두었고 리파지토리 owner가 해당 문제를 인지한 상태입니다.

  • GPT3.5를 사용합니다. 즉, 변경된 코드의 양이 임계치 이상으로 많다면 리뷰를 해주지 않을 수 있습니다.
  • openai api 는 무료가 아닙니다. 1000토큰 당 0.002$이며 첫 가입시 18$ 크레딧을 제공합니다. 물론 이것도 기간 내에 사용하지 않으면 사용할 수 없습니다. openai accound usage에서 사용량을 확인해보세요.

  • 코드 리뷰 퀄리티의 기복이 심합니다.

장점

  • 개인 프로젝트의 허전함은 확실히 해소시켜주는 듯 합니다. 이정도면 정말 개인 프로젝트에는 추가해볼만한 봇이라고 생각이 들었습니다.
  • 생각치도 못한 부분에서 리뷰를 해주어서 좋았습니다. 그렇지 않았다면 그냥 넘어갈 수 있는 부분도 짚어주어서 꽤 만족스러워요.
  • 어떤 코드를 변경하였고 무엇이 바뀌었는지 브리핑해줍니다. 이 부분도 사소하지만 만족스러웠습니다.
profile
JavaScript/React 개발자
post-custom-banner

23개의 댓글

comment-user-thumbnail
2023년 3월 16일

와 이제 코드리뷰영역까지....PR에 대해 놓치는 부분이 있나 확인해볼 때 좋겠네요...

1개의 답글
comment-user-thumbnail
2023년 3월 17일

잘봤습니다! 궁금한게 있는데 저기 GITHUB_TOKEN도 시크릿 키로 만들어줘야하죠?

1개의 답글
comment-user-thumbnail
2023년 3월 19일

대박인데요? ㅋㅋㅋ 좋은 정보 감사합니다.

답글 달기
comment-user-thumbnail
2023년 3월 19일

와..이거 최고네요

답글 달기
comment-user-thumbnail
2023년 3월 20일

대박이네요
혹시 open ai에서 429에러 ( too many request ) 뜨는데 해결 보신적 있으신가요?

7개의 답글
comment-user-thumbnail
2023년 3월 24일

멋지네요 감사합니다

1개의 답글
comment-user-thumbnail
2023년 3월 25일

저도 적용해봤어용 ㅎㅎ
유용하고 재밌네요~ 감사합니다 !!

답글 달기
comment-user-thumbnail
2023년 4월 7일

토큰 글자수 제한이 있는 것 같은데 소스코드 길이와 관련해서 문제는 없으셨나요?

1개의 답글
comment-user-thumbnail
2023년 7월 18일

좋은 글 감사합니다! 개인프로젝트의 허전함... ㅎㅎ

답글 달기
comment-user-thumbnail
2023년 7월 24일

개인 프로젝트에 적용시켜봐야겠습니다. 감사합니다 :)

답글 달기
comment-user-thumbnail
2023년 12월 5일

좋은 글 감사합니다! 개인 프로젝트에 적용해 봐야겠네요!

답글 달기