Sangmun

python flake8 기본 사용법 본문

개발

python flake8 기본 사용법

상상2 2023. 1. 5. 18:33

flake8은 pep8 코딩컨벤션을 준수하는 Lint를 위한 패키지이다.

정적으로 코드를 검사를 해주면 수정은 해주지 않는다. 수정을 해주는 패키지는 black으로 다음번에 다룰 예정이다.

 

flake8 설치

pip install flake8

 

flake 사용법

아래와 같이 파일명을 입력하거나 파일명을 입력하지 않으면 폴더 전체를 검사한다.

flake8 # 폴더 전체 검사
flake8 file_name.py # 한개의 파일만 검사

flake8로 검사한 결과

flake8 설정파일

.flake8 file을 생성해주어 아래와 같은 내용을 입력하면 제외할 폴더와 파일은 제외를 하고 또한 무시할 에러메시지도 설정 할 수 있따..

[flake8]
exclude =
    .git,
    .gitignore,
    *.pot,
    *.py[co],
    __pycache__,
    venv,
    .env

ignore =
        W291, E128, E501

이러한 룰셋 기준은 아래와 같은 규칙을 따르고 있다.

https://help.sider.review/getting-started/recommended-rules/#recommended-ruleset

 

Recommended Ruleset | Sider Documentation

Static analysis with its default configuration typically reports many issues, and some of them don't fit your projects. Most analysis tools have the capability to let users enable/disable analysis rules for users to avoid such "false positives." But, a hug

help.sider.review

 

해당 설정 파일을 전역으로 설정하고 싶으면 아래의 경로에 설정파일을 만들면 된다.

Linux, OS X: ~/.config/flake8
Windows : ~\.flake8

flake8 git hook 설정

git에서는 어떠한 이벤트에 특정 스크립트를 실행하는 hook이라는 기능이 있다.

pre-commit은 커밋하기 전에 실행되는 hook인데 이때 Lint 작업을 할 수 있다.

 

해당 링크는 해당 내용에 대한 매뉴얼이다.

https://flake8.pycqa.org/en/3.9.0/user/using-hooks.html#checking-all-modified-files-currently-tracked

 

Using Version Control Hooks — flake8 3.9.0 documentation

Flake8 aims to make smart choices that keep things fast for users where possible. As a result, the Flake8 Git pre-commit will default to only checking files that have been staged (i.e., added to the index). If, however, you are keen to be lazy and not inde

flake8.pycqa.org

flake8 --install-hook git

위의 명령어를 입력하면 .git/hooks/pre-commit 파일이 생성이 되며 strict, lazy 옵션을 설정해서 사용이 가능하다.

 

* strict 옵션을 사용하면 이름 그대로 Lint가 실패하면 커밋이 되지 않고 Lint의 결과를 보여준다.

git config --bool flake8.strict true

 

* lazy 옵션을 사용하면 staged된 파일만 검사를 하며 lazy 옵션이 false인 경우에는 tracked된 파일을 검사한다.

git config --bool flake8.lazy true

 

'개발' 카테고리의 다른 글

저작권에 대한 내용 정리  (0) 2023.01.23
자연어 전처리 관련 유용한 패키지  (0) 2023.01.22
python 코드 formatter black  (0) 2023.01.06
Mini conda  (0) 2022.10.20
알파인 리눅스(Alpine linux)  (0) 2022.08.27
Comments