코드리뷰가 얼마나 든든한지 받아본 사람들은 알거다.
나도 최근 프로젝트에서 코드리뷰를 해주시는 멘토님이 계셔서 정말 많은 도움을 받았는데.
일정상 멘토링이 마무리 되고 개인적으로 개선작업을 하면서는 코드리뷰를 받을 수 없다....
그러던 중 , 개발자 톡방을 통해서 코드리뷰를 받을 수 있는 방법을 알게됬는데. 바로 CodeReviewBot
!
https://github.com/anc95/ChatGPT-CodeReview
흠...이번에 알았는데 나도 모르게 중국 친구들한태 도움을 많이 받았는데
개인적으로 자주 쓰는 IntelliJ에서 document 즉시 번역을 위한 플러그인도
중국친구가 만들어줬고, 이번에 코드리뷰도 중국친구가 만들어줬다.
떙큐!
사전에 정리하자면
https://openai.com/blog/openai-api
해당 링크의 OpenApi Key를 발급받는다.
키 이름은 크게 상관 없고. 키 코드만 잘 보관해야한다.
당연한 말이지만 레포지토리가 있어야한다. 하지만 너무 당연한 부분이라 생략!
키가 있어야 API를 호출할 수 있기 때문에 workflow 과정중에 사용할 secret을 등록해야한다.
레포지토리 -> Settings -> Secrets and variables -> Actions
OPENAI_API_KEY
라는 이름으로 발급받은 키를 등록한다.
GitHub action에 workflow를 활용해 코드리뷰를 받을 수 있도록 설정한다.
레포지토리 root에 .github/workflows 폴더를 생성하고 아래와 같이 코드를 작성한다.
name: Code Review # workflow 이름
# 이 작업 동안에는 코드를 읽고 PR에 코멘트만 추가해주면 된다.
permissions:
contents: read # 읽기 권한
pull-requests: write # PR에 코멘트 추가 권한
on: # 언제 실행할지
pull_request: # PR이 올라오면
types: [ opened, reopened, synchronize ] # PR 생성 , 재생성 , 커밋같은 동기화 작업이 있을때
jobs:
test:
# 만약 PR에 gpt review 라는 라벨이 붙어있을때만 실행하고 싶다면 아래와 같이 작성하면 된다.
# if: ${{ contains(github.event.*.labels.*.name, 'gpt review') }} # Optional; to run only when a label is attached
runs-on: ubuntu-latest
steps:
- uses: anc95/ChatGPT-CodeReview@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 이 부분은 자동적으로 깃허브에서 생성되는 부분이기 때문에 따로 설정할 필요가 없다.
OPENAI_API_KEY: ${{ secrets.API_KEY }} # 여기서 secrets.등록한_키 이름을적어주면된다. 나는 API_KEY로 등록 했기 때문에 API_KEY로 작성했다.
# Optional
LANGUAGE: Korean #한국어
OPENAI_API_ENDPOINT: https://api.openai.com/v1 # 이 부분은 따로 설정하지 않으면 자동으로 설정된다.
MODEL: gpt-3.5-turbo # 모델을 변경하면 다른 결과가 나온다. 비용도 다르기 때문에 주의 (https://platform.openai.com/docs/models)
PROMPT: # 예: 다음 코드 차이점에 혼동이나 불규칙성이 있는지 확인하세요.
max_tokens: 10000 #이번 리뷰에서 사용할 토큰의 최대 개수
이 부분은 https://github.com/anc95/ChatGPT-CodeReview#readme 의 내용을 번역만 한 것인대
직관적이고 이해하기 쉽게 작성되어있기 때문에 따로 설명을 하지 않아도 될거 같다.
별개로 yml if: ${{ contains(github.event.*.labels.*.name, 'gpt review') }} # Optional; to run only when a label is attached
이 부분이 중요한대 다음 스탭에서 한번 더 설명하겠다 꼭 설정하시길 추천.
이제 PR을 생성하면 된다.
이런 식으로 코드리뷰를 진행해준다.
3번 처럼 null 검사도 해주고 주석이나 조건문의 의미도 설명한는 식으로 진행해준다.
위의 이미지를 봐서 느낄수 잇겟지만. 2인까지는 무조건 추천한다.
코드를 모두 읽고 리뷰하는 것은 공수가 엄청나게 많이 발생한다.
이런 부분을 gpt의 정리 코멘트일 경우에 매우 효율적인 모습을 보여준다.
나도 개인 프로젝트를 하면서 적용하고 도움이 많이 되고 있고.
다른 분들도 한번씩 써보셨으면 좋겟다.
PR오픈하고 지속적으로 수정할탠대. 매번 매번 코드리뷰를 받으면 PR이 너무 길어지고
불필요한 리뷰도 많이 사용한다.
나는 몰랐는데 ReadMe에 다 적혀있었다. 지금 글 쓰면서 알았다.....
기본적으로 on 조건은 동일하게 둔 후 if 조건을 추가하면 된다.
if: ${{ contains(github.event.*.labels.*.name, 'gpt review') }} # Optional; to run only when a label is attached
runs-on: ubuntu-latest
이거는 gpt review 라는 라벨이 붙어있을때만 실행하고 싶다는 의미이다.
라벨을 붙였다 떼면 코드리뷰가 실행되지 않는다.
이 if 조건을 runs-on 이전에 추가해 원하는 조건을 제어하면 된다.
if: ${{ contains(github.event.head_commit.message, '#code-review') }} || ${{ contains(github.event.head_commit.message, '#code_review') }}
runs-on: ubuntu-latest
위를 참고해서 본인의 편의대로 커밋 메시지나 PR 라벨을 활용해 코드리뷰를 필요 시에만 요청하게 설정하고 사용하길 바란다.