Python/Utils

[Python Utils] 코드 컨벤션 (pylint, flake8, pre-commit, mypy)

yubi5050 2022. 8. 24. 12:05

Pylint 

  • 파이썬 코드의 오류를 확인 및 코딩 표준 (PEP8) 을 검사
  • 아래 처럼 Score와 문제가 있는 Line을 출력 해준다.
# 라이브러리 설치
pip install pylint

# pylint 실행
pylint <filename or folder name>

 

 

pre-commit hook

git 로컬에서 커밋시마다 주어진 조건에 따라 TEST 해주는 도구

black, isort, pylint, flake8 등... 다양한 code formatter와 style checker들을 차례대로 진행되게 할 수 있다.

설정은 pre-commit-config.yaml 파일로 관리

아래는 pre-commit으로 간단히 black이란 code formatter를 hook으로 거는 것

 

명령어

$ pip install pre-commit
$ pre-commit install
$ git add "수정 파일"

# commit시 자동으로 hook이 진행됨
$ git commit -m "커밋메시지"

 

config 파일

## 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: v4.4.0
    hooks:
    -   id: trailing-whitespace
    -   id: end-of-file-fixer
    -   id: check-yaml
    -   id: check-added-large-files

    # Code Formatter
-   repo: https://github.com/psf/black
    rev: 23.1.0
    hooks:
    -   id: black

 

flake8

파이썬의 문법 및 코드 스타일을 검사해주는 패키지 (기본적으로 PEP8 스타일 가이드로 검사 가능)

git commit 전 검사해 주는 pre-commit hook 기능을 많이 사용

 

https://flake8.pycqa.org/en/latest/

 

Flake8: Your Tool For Style Guide Enforcement — flake8 5.0.4 documentation

If you want Flake8 to be installed for your default Python installation, you can instead use: Note It is very important to install Flake8 on the correct version of Python for your needs. If you want Flake8 to properly parse new language features in Python

flake8.pycqa.org

 

1. 라이브러리 설치 및 실행 방법

# flake8 install 명령어
pip install flake8

# 실행 방법
flake8
flake8 실행 결과

 

2.  .flake8 파일로 옵션 설정하기

# .flake8
[flake8]

ignore =
    E501,
    E402,

exclude = .git, __pycache__
count = True

 

3. pre-commit hook으로 flake8 등록

커밋시마다 TEST 해주는 도구. 아래 명령어를 실행하면 .git/hooks/pre-commit 파일이 생성된다. 관련 자세한 설정은 해당 링크 참고 

# flake8 commit hook 생성
flake8 --install-hook git

 

그 밖 

  • mypy : mypy : typehint (type annotation) 오류 발견해주는 tool
  • black : PEP8 스타일의 Code Formatter (flake8과 비슷하나 flake8은 checker고 black은 좀더 강제한다.)
  • isort : import문을 sorting