본문 바로가기
자습

pre-commit 활용하기

by litaro 2019. 8. 31.

https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/

 

Automate Python workflow using pre-commits: black and flake8

Before I commit my staged Python files, black formats my code and flake8 checks my compliance to PEP8. If everything passes, the commit is made. If not, then I the perform necessary edits and commit again. Less time is spent on code formatting so I can foc

ljvmiranda921.github.io

요즘 회사에서 Hot 한 Pre Commit을 한번 제대로 활용해보기 위해 정리하려고 도전~

이미 인터넷에 사용기가 많아서 차근 차근 따라 가면 문제가 없다. ㅎ

참고한 글에서는 git commit 전 black을 code formatter로 활용하고 flake8을 PEP8 checker로 사용하였다.

https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/

점선으로된 Framework for pre-commit 에 자신이 넣고 싶은 step을 넣으면 그만이다.

기본 Unit Test나 Pytest를 실행하도록 할 수도 있다.

일단 간단한 샘플 코드 만들어서 아래와 같은 pre-commit을 한번 실습해보자.

framework for pre-commit

사전 준비

샘플 프로젝트 경로

 

1. pre-commit 설치

pip install pre-commit

2 .pre-commit-config.yaml 파일 만들기

repos:
  - repo: https://github.com/ambv/black
    rev: stable
    hooks:
      - id: black
        language_version: python3.6
        exclude: doc/|monitoring/|scripts/|tool/|test/
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v1.2.3
    hooks:
      - id: flake8
        exclude: doc/|monitoring/|scripts/|tool/|test/
  - repo: local
    hooks:
      - id: unit test
        name: unit test
        entry: python3 -m pytest -v test
        language: system
        exclude: doc/|monitoring/|scripts/|tool/|test/
        types: [python]

3. pre-commit 을 위한 git hooks를 설치

pre-commit install

실행 결과

black 과 flake8 만 적용

pre-commit 실패

pre-commit 에 의해 자동 수정된 부분이 생기고, 다시 이를 add 하면 성공

pre-commit 성공

black + flake8 + unit test 적용

pre-commit 성공

 

'자습' 카테고리의 다른 글

Django vs. Flask  (1) 2019.09.28
click을 이용한 python CLI  (0) 2019.09.08
파이썬 클린 코드 CH3. 좋은 코드의 일반적인 특징  (0) 2019.08.17
AWS Lambda@Edge  (0) 2019.08.10
Python Logging  (0) 2019.07.26