개요
Django로 서버사이드를 개발하면서 다른 개발자분들과 협업을 하게 되었습니다. 여러 개발자가 협업을 하므로, 코드의 스타일을 통일하고, 잠재적인 버그를 줄이기 위해, 코드 정적 분석기인 flake8
을 도입하기로 했습니다.
이번 블로그 포스트에서는 Django 프로젝트에 flake8
을 설정하고 사용하는 방법에 대해서 설명합니다.
- flake8: https://flake8.pycqa.org/
flake8 설치
Django에서 flake8을 사용하기 위해서는 우선, flake8을 설치할 필요가 있습니다. 다음 명령어를 사용하여 flake8을 설치합니다.
pip install flake8
설치를 하였다면, 잊지말고 requirements.txt
에 저장해 둡니다.
pip freeze > requirements.txt
이것으로 flake8을 설치하는 방법에 대해서 알아보았습니다.
flake8 사용법
다음 명령어를 실행하여 flake8을 실행할 수 있습니다.
flake8
Django 프로젝트 폴더에서 flake8을 실행하면 다음과 같은 내용을 확인할 수 있습니다.
./venv/lib/python3.8/site-packages/pyflakes/checker.py:153:31: F821 undefined name 'PercentFormat'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:160:9: F821 undefined name 'Generator'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:160:9: F821 undefined name 'PercentFormat'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:180:47: F821 undefined name 'Optional'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:759:35: F821 undefined name 'List'
./venv/lib/python3.8/site-packages/pyflakes/checker.py:760:35: F821 undefined name 'Dict'
flake8의 결과를 보면 checker.py:153:31: F821 undefined name 'PercentFormat'
와 같이 파일명:에러위치 에러ID 에러 내용
을 확인할 수 있습니다.
flake8 설정하기
저는 djanog 프로젝트 폴더에 virtualenv
를 생성하여 사용하고 있습니다. 그래서, flake8이 불필요하게 virtualenv
폴더까지 분석하고 있으니, flake8이 virtualenv 폴더를 분석하지 않도록 설정할 필요가 있었습니다.
falke8이 virtualenv 폴더를 무시할 수 있도록 설정하기 위해, .flake8
파일을 Django 프로젝트 폴더에 생성하고 다음과 같이 수정하였습니다.
[flake8]
exclude =
.git,
.gitignore,
*.pot,
*.py[co],
__pycache__,
venv,
.env
이렇게 설정하고, 설정이 잘 적용되었는지 확인하기 위해 아래에 명령어를 사용하여 flake8을 실행해 봅니다.
flake8
그럼 이전과는 다르게 다음과 같은 결과를 확인할 수 있습니다.
./petmeeting/settings.py:98:80: E501 line too long (91 > 79 characters)
./petmeeting/settings.py:101:80: E501 line too long (81 > 79 characters)
./petmeeting/settings.py:104:80: E501 line too long (82 > 79 characters)
./petmeeting/settings.py:107:80: E501 line too long (83 > 79 characters)
./petmeeting/settings.py:132:33: W292 no newline at end of file
flake8은 많은 내용을 체크하지만, 일반적으로 생각하지 않아도 되는 부분까지 에러로 표시하는 경우가 있습니다. 이런 부분들을 무시하기 위해서 저는 다음과 같이 무시할 내용들을 추가하였습니다.
[flake8]
exclude =
.git,
.gitignore,
*.pot,
*.py[co],
__pycache__,
venv,
.env
ignore =
E121,
E126,
E127,
E128,
E203,
E225,
E226,
E231,
E241,
E251,
E261,
E265,
E302,
E303,
E305,
E402,
E501,
E741,
W291,
W292,
W293,
W391,
W503,
W504,
F403,
B007,
B950,
max-line-length = 200
이 내용은 Sider라는 회사에서 추천하는 규칙을 적용한 내용입니다.
이 규칙은 단순히 정한건 아닌거 같고, 이 회사에서 연구한 결과를 바탕으로 추천하고 있는거 같습니다. 자세한 내용은 아래에 링크를 참고하시기 바랍니다.
완료
이것으로 Django 프로젝트에서 flake8을 사용하는 방법에 대해서 알아보았습니다. 또한 불필요한 규칙들과 폴더를 무시하기 위한 설정 방법에 대해서도 알아보았습니다. 앞으로 다른 개발자들과 협업하면서 이렇게 설정한 flake8이 많은 도움이 되기를 기대해 봅니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.