개요
이전 블로그 포스트에서 파이썬의 코드 정적 분석기인 flake8
을 사용하여 코드 스타일을 통일하고, 잠재적인 버그를 줄이는 방법에 대해서 알아보았습니다.
이번 블로그 포스트에서는 pre-commit
을 사용하여 소스코드를 Git에 커밋할 때, 설정한 flake8을 자동으로 실행하는 방법에 대해서 알아봅니다.
- pre-commit: https://pre-commit.com/
pre-commit 설치
pre-commit을 사용하여 flake8을 자동으로 실행하기 위해서는, pre-commit을 설치할 필요가 있습니다. 다음 명령어를 사용하여 pre-commit을 설치합니다.
pip install pre-commit
설치를 완료하였다면, 잊지말고 requirements.txt
에 저장해 둡니다.
pip freeze > requirements.txt
이것으로 pre-commit을 설치하는 방법에 대해서 알아보았습니다.
pre-commit 설정
pre-commit을 사용하여 flake8을 자동으로 실행하기 위해서는, pre-commit의 설정 파일을 작성할 필요가 있습니다. 다음 명령어를 사용하여 pre-commit의 설정 파일을 생성합니다.
pre-commit sample-config > .pre-commit-config.yaml
생성된 .pre-commit-config.yaml
파일을 열어보면 다음과 같습니다.
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
pre-commit에서 제공하는 샘플 내용을 확인할 수 있습니다.
flake8 설정하기
이제 pre-commit의 설정 파일에 flake8을 설정하는 방법에 대해서 알아봅시다. pre-commit의 설정 파일인 .pre-commit-config.yaml
은 기본적으로 다음과 같은 구조를 가지고 있습니다.
repos:
- repo: repo-url
rev: version
hooks:
- id: hook-id
- repo: pre-commit이 제공하는 기능의 Repository URL
- rev: 사용하려는 기능의 버전
- id: pre-commit이 제공하는 기능
pre-commit은 기본적으로 제공하는 기능들이 있습니다. 다음 링크를 통해 어떤 기능들이 있는지 확인할 수 있습니다.
우리는 이중에서 flake8을 사용할 예정입니다. 그럼 .pre-commit-config.yaml
파일을 열고 다음과 같이 수정합니다.
repos:
- repo: https://gitlab.com/pycqa/flake8
rev: 3.8.4
hooks:
- id: flake8
pre-commit에서 제공하는 repo의 URL과 버전, flake8 hook을 설정하였습니다. 이 부분은 flake8 공식 문서에서도 확인할 수 있습니다.
- flake8 hooks: https://flake8.pycqa.org/en/latest/user/using-hooks.html
이제 이렇게 설정한 파일을 실제 Git의 Commit hook에 등록하기 위해 다음 명령어를 실행합니다.
pre-commit install
이것으로 pre-commit을 사용하여 flake8을 사용할 준비가 되었습니다.
pre-commit 실행
그럼 우리가 설정한 pre-commit이 잘 동작하는지 확인해 봅시다. 다음 명령어를 실행하면 우리가 설정한 .pre-commit-config.yaml
파일을 기준으로 pre-commit을 실행할 수 있습니다.
pre-commit run --all-files
명령어를 실행하면 다음과 같은 결과를 확인할 수 있습니다.
flake8...................................................................Passed
이것으로 우리가 설정한 pre-commit이 잘 동작하는 것을 확인하였습니다. 이제 지금까지 설정한 내용을 Git에 커밋합니다.
git add .
git commit -m 'Add pre-commit for flake8'
git push origin main
완료
이것으로 pre-commit을 사용하여 Git에 커밋을 할 때마다, flake8을 실행하는 방법에 대해서 알아보았습니다. 주의해야할 점은, 새롭게 Repository를 Clone한 경우 잊지말고 pre-commit install
을 실행하여 pre-commit의 설정 내용을 Git hooks에 등록해야 합니다.
git clone repository_url
# virtualenv venv
# source venv/bin/activate
pip install -r requirement.txt
pre-commit install
그럼 이제 자동화된 flake8으로 더욱 생산성 높은 개발을 해보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.