flake8과 Black이란?
flake8
flake8이란 "pep8의 체크, pyflakes의 체크 및 순환 복잡도를 체크할 수 있는 Wrapper"이다. 즉, 폭 넓게 커버해주는 Python의 코드 체크 툴이다. flake8은 아래의 항목을 체크해준다.
- PyFlakes (pyflakes : 코드의 에러 체크)
- pycodestyle (pycodestyle : PEP8에 준거하고 있는지를 체크)
- Ned Batchelder's McCabe script (mccabe : 순환 복잡도를 체크)
Black
다만, flake8은 코드의 체크를 해주긴 하지만 에러의 수정까지는 불가능하다. 여기서 에러를 자동으로 수정해주는 것이 Black이다.
flake8의 도입 및 실행
이제 flake8을 사용해보자 ! 그전에 먼저 flake8를 설치할 필요가 있다. 아래의 pip 커맨드로 설치할 수 있다.
$ pip install flake8
실제로 사용할 때는 아래의 커맨드를 사용한다.
$ flake8 파일명
또한, 파일명뿐만 아니라 디렉토리명을 적어도 실행할 수 있다. 여기서는 django의 blogs이라는 어플리케이션을 시험삼아 실행시켜 본 결과 다음과 같은 결과가 출력됐다.
$ flake8 blogs
blogs/views.py:3:1: E302 expected 2 blank lines, found 1
blogs/views.py:4:47: W292 no newline at end of file
blogs/urls.py:7:2: W292 no newline at end of file
blogs/admin.py:5:1: W391 blank line at end of file
blogs/models.py:4:1: E302 expected 2 blank lines, found 1
blogs/models.py:11:26: W292 no newline at end of file
blogs/tests.py:1:1: F401 'django.test.TestCase' imported but unused
blogs/migrations/0001_initial.py:17:80: E501 line too long (114 > 79 characters)
또한, --show-source 옵션을 붙이면 수정 사항을 알기 쉽게 출력해준다.
$ flake8 --show-source blogs
blogs/views.py:3:1: E302 expected 2 blank lines, found 1
def index(request):
^
blogs/views.py:4:47: W292 no newline at end of file
return render(request, 'blogs/index.html') ^
blogs/urls.py:7:2: W292 no newline at end of file
] ^
blogs/admin.py:5:1: W391 blank line at end of file
^
blogs/models.py:4:1: E302 expected 2 blank lines, found 1
class Blog(models.Model):
^
blogs/models.py:11:26: W292 no newline at end of file
return self.title ^
blogs/tests.py:1:1: F401 'django.test.TestCase' imported but unused
from django.test import TestCase
^
blogs/migrations/0001_initial.py:17:80: E501 line too long (114 > 79 characters)
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
Black의 도입 및 실행
black을 도입하기 위해는 다음의 pip 커맨드로 설치한다.
$ pip install black
그러나, 다음과 같은 에러가 발생하는 경우가 있을 수 있다.
Cannot pip install black: No matching distribution found for black
이 에러를 한 번에 해결할 수 있는 방법이 있으므로 간단히 소개하고자 한다. 바로 아래의 커맨드로 설치를 실행하는 것이다.
python3.6 -m pip install black
black은 python3.6이후의 버전이 아니면 기능하지 않는듯 하므로, 이 커맨드로도 해결되지 않았다면 python 버전을 확인해보자.
VSCode의 설정
Black의 설치가 끝나면 다음은 VSCode의 설정을 하자. VSCode의 settings의 설정은 아래와 같다.
설정명 | 기능 | 설정값 |
python.linting.enabled | Lint 기능을 유효화할 것인가? | true |
python.linting.pylintEnabled | Linter에 pylint를 사용할 것인가? | flase |
python.linting.flake8Enabled | Linter에 flake8을 사용할 것인가? | true |
python.linting.lintOnSave | 파일 저장시에 Lint를 실행할 것인가? | true |
python.formatting.provider | Python 코드의 정형 방식으로 무엇을 사용할 것인가? | black |
editor.formatOnSave | 파일 저장시에 자동 정형을 사용할 것인가? | true |
실제로 사용해보기
아래의 코드를 저장하면,
def foo():
print(
"Hello"
"World"
)
실제로는 다음과 같이 저장된다.
def foo():
print("Hello" "World")
참고자료
https://qiita.com/tsu_0514/items/949827f6a1cfca32dc65
'IT > 기초 지식' 카테고리의 다른 글
Google Chrome이 추천하는 프라이버시 샌드 박스 기술의 하나인, Privacy Budget이란 무엇인가? (0) | 2022.05.08 |
---|---|
[Azure] Azure Machine Learning Compute이란? (0) | 2022.04.15 |
docstring의 세 가지 스타일 (0) | 2022.04.13 |
[Azure] Azure으로 MLOps 구현하기 <실전편> (0) | 2022.04.12 |
[Azure] Azure으로 MLOps 구현하기 <개념편> (0) | 2022.04.11 |