개발계발/Python

python Lint툴 적용하기(flake8, black)

냥냥친구 2022. 9. 25. 14:32

파이썬은 PEP8이라고 하는 파이썬 코드 작성 규칙이 있다.

이 작성 규칙을 지키지 않아도 스크립트를 실행하는데 문제가 없지만 코드의 일관성과 용이한 유지보수를 위해, 그리고 당신의 코드를 읽을 또 다른 동료를 위해 규칙을 지켜주어야 한다.

하지만 이 규칙을 모두 기억하기란 어려운 일이다. 이 때 린트툴을 사용하면 내가 작성한 코드를 읽고 코드 규칙에 어긋나는 부분을 알려준다. 심지어 직접 고쳐주기도 한다.

 

파이썬의 기본 린트툴로는 pylint가 있으며 유명한 flake8이나 black 패키지로 대체할 수 있다. 하나씩 사용해보자.

 

flake8

설치

pip install flake8

실행

# 패키지 전체 검사
flake8
# 특정 경로 및 파일 검사
flake8 your_script.py

결과

./lib/youtube/youtube.py:3:1: F401 'json' imported but unused
./lib/youtube/youtube.py:6:1: F401 'apiclient.discovery.build' imported but unused
./lib/youtube/youtube.py:8:1: E265 block comment should start with '# '
./lib/youtube/youtube.py:13:1: E302 expected 2 blank lines, found 1
./lib/youtube/youtube.py:19:1: W293 blank line contains whitespace
./lib/youtube/youtube.py:35:1: W293 blank line contains whitespace
./lib/youtube/youtube.py:51:1: W293 blank line contains whitespace
./lib/youtube/youtube.py:67:1: W293 blank line contains whitespace

명령어를 실행하고 나면, 코드 내 규칙 오류를 잡아준다. F401, E302 등이 PEP8에 명시된 코드 규칙이며 어긴 내용을 간략하게 적어준다. 실행 내용을 참고하여 코드 규칙을 적용해주면 된다.

 

만약, lint를 적용하고 싶지 않은 파일이나 코드 규칙이 있다면, .flake 파일 생성 후 아래와 같이 제외하고 싶은 내용을 작성해주고 실행하면 된다.

[flake8]

exclude = 
    .git,
    .gitignore,
    venv,
    ./lib/

ignore =
    F401,
    E501

 

black

black은 잘못된 코드 규칙을 직접 수정해준다.

 

설치

pip install black

실행

black your_script.py

--check 옵션을 실행하면 포맷팅이 필요하다고 귀엽게 알려준다.

결과

(귀여운 반짝반짝 케이크)

실행 후 코드를 보면 모양새가 바뀐 것을 확인할 수 있다. 직접 해보시길..

다시 --check 옵션을 추가하면 All done! 이라며 케이크를 또 준다.

black은 공식 커뮤니티에서 개발한 것인데도 이렇게 귀엽다.

'개발계발 > Python' 카테고리의 다른 글

Django ALLOWED_HOST, CORS_ORIGIN_WHITELIST  (0) 2022.12.09