안녕하세요. 글쓰는 개발자 입니다.
원활한 협업을 위해 필요한 pre-commit 적용기를 소개합니다. 프로젝트를 리딩하면서 제가 꼭 하고 싶었던 코드 리뷰를 도입하고 실제로 활발히 진행 중입니다. 그런데 로직보다 PEP8에 맞지 않는 code convention check에 많은 시간이 소요된다는 것을 알게 되었습니다. 그래서 예전부터 적용해야겠다고 생각한 Git Hook 을 사용하여 pre-commit을 적용하였고 코드 리뷰 시, 조금 더 코드 구조와 로직에 집중할 수 있게되었습니다. 그럼 python backend (FastAPI) 환경에 어떻게 pre-commit을 적용했는 지 소개하겠습니다.
2023. 2. 16(목) 추가 내용 : 3. Windows 환경에서 적용 불가 에러 해결 (아래 링크)
-> 야심차게 pre-commit을 적용했지만, 개인 PC를 사용해 업무를 수행하는 환경을 너무 얕잡아 보았습니다.
https://backstreet-programmer.tistory.com/191
solved! windows python pre-commit error
Windows 환경에서 적용 불가 에러 해결 야심차게 Pre-commit을 잘 적용했고 동료들이 잘 썼지만 변수가 하나 있었습니다. 바로 Windows PC를 사용하는 환경에서는 pre-commit을 제대로 수행 할 수 없었습니
backstreet-programmer.tistory.com
목차
1. pre-commit
2. 적용
1. pre-commit
flake8 과 pytest 두 가지를 pre-commit에 적용했습니다.
2. 적용
1) pre-commit 설치
pip install pre-commit
2) menifeset 작성
project root 에 .pre-commit-config.yaml 파일을 생성하고 아래와 같이 작성합니다. default 값 중에서 max-line-length 를 120으로 변경하여 적용했습니다.
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v1.2.3
hooks:
- id: flake8
args:
- "--max-line-length=120"
- repo: local
hooks:
- id: pytest-check
name: pytest-check
entry: pytest -s
language: system
pass_filenames: false
always_run: true
3) pytest.ini 생성
pytest 실행 시 module 경로를 찾지 못해 바생하는 'module not found error' 를 해결하기 위해 project root에 pytest.ini 파일을 아래와 같이 생성 합니다.
[pytest]
pythonpath = . app
#### project structure ####
# app #
# └── src #
# └── tests #
###########################
4) commit 시 자동 실행
pre-commit install
pre-commit 을 적용한 덕분에 동료 개발자들에게 '제발 없애면 안되겠냐. commit이 안되니 너무 힘들다.' 는 푸념을 들을 때 마다 싱글벙글하고 뿌듯합니다. 그래도 동료들도 점점 깔끔한 코드를 만드는 습관을 갖게 되고 점점 클린 코드의 필요성을 공감해주어 몹시 기쁜 요즘입니다. 혹시, 개발 체계가 없는 곳에서 고군분투 하고 있는 누군가에게 이 글이 도움되었으면 좋겠습니다.
'Backend' 카테고리의 다른 글
solved! windows python pre-commit error (0) | 2023.02.16 |
---|---|
Docker 환경에서 postgreSQL 설치, backup, restore 하기 (0) | 2023.02.15 |