이 글은 더이상 관리되지 않습니다. AI와 함께 코딩하는 것에 대해 더 알아보고 싶다면 아래의 리스트를 확인해보세요!
- 코파일럿 X - https://github.com/features/preview/copilot-x
- AICodeHelper - vscode 확장
- Github Copilot Labs - vscode 확장
개인 프로젝트를 진행하는 것은 정말 고역입니다. 저에게 무엇보다 가장 필요한 것은 동료들의 따뜻한 코드 리뷰가 아닐까 싶은데요. ChatGPT-CodeReview
를 이용하여 ChatGPT 에게 코드리뷰를 받아본 후기를 공유합니다.
Github Action을 이용해서 Chat GPT한테 Code Review 시키기
Chat GPT가 당신과 놀아주길 바란다면 API key 가 필요합니다. OPENAI API에서 로그인하고 설정에서 API Key 를 생성합시다. secret key 를 깃허브 리파지토리에 등록해야 하니 복사해두세요.
OPEN AI API는 무료가 아닙니다.
이제 Chat GPT를 부려먹을 리파지토리나 조직의 설정에 들어가서 왼쪽 사이드 바에서 Secrets and variables 를 선택합니다. New repository secret
버튼을 클릭하여 이름을 OPENAI_API_KEY 로 입력하고 secret에 복사해둔 API key 를 붙여넣어주세요. (아래 사진을 참고해주세요.)
사용할 액션은 중국인 개발자가 제작한 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를 제거하는 코드가 있지만 이를 알지못한 상태로 코드 리뷰를 한 것을 확인할 수 있었습니다.
PR을 올린 이후 커밋을 해서 PR의 상태가 변하는 것을 Github Action 에서는 synchronize 이벤트라고 말합니다. ChatGPT-CodeReview Readme에는 어째서인지 언급도 하지 않지만 코드를 살펴보면 확실히 이 synchronize 를 지원하는 것을 확인할 수 있습니다. 여기서 더 자세히 확인할 수 있습니다.
README의 사용법에는 이벤트 type 에 synchronize 대신 reopened 가 있었습니다. 만약 제가 작성한 yml 로 문제가 발생한다면 README의 내용을 따라가시기 바랍니다.
테스트 커밋을 추가해보았고 PR의 상태가 변했습니다. Code Review action이 실행되었고 새롭게 변경된 파일들에 코드 리뷰가 진행된 것을 확인할 수 있었습니다.
와 이제 코드리뷰영역까지....PR에 대해 놓치는 부분이 있나 확인해볼 때 좋겠네요...