VSCode 에서 Prettier 랑 Black 동시에 사용하기

Kim Seohyun·2022년 7월 6일
0
post-thumbnail

Python 쓸 일이 없어서 미루고 미루고 미루고 미뤘던 formatter setting 이다.
그러다가 이번 주에 model serving 공부하기 시작하면서 Python 포멧팅이 들쑥날쑥거리는 것을 견디지 못하고 각잡고 문제를 청산했다.

VSCode setting sync 를 꺼뒀기 때문에 나중에 또 설정할 일이 있을 것 같아서 기록해둔다!

Flake8 과 Black 적용

Flake8 은 Python 코드 체크 툴로, 크게 세 가지를 점검한다.

  • PyFlakes: 코드 에러 여부
  • PyCodeStyle: PEP8 에 준거 여부
  • Ned Batchelder's McCabe script : 순환 복잡도

그러나 Flake8 은 에러를 수정하지는 못하기 때문에 이를 해결하고자 Black 이라는 formatter 를 사용한다.
즉, Flake8 으로 linting 하고 Black 으로 이를 formatting 한다.

설치를 해보자!

Flake8 설치 및 테스트

$ pip install flake8
$ flake --show-source <file name>

두 번째 명령어를 실행했을 때 not found 만 뜨지 않으면 적용되는 것!

Black 설치 및 테스트

$ pip install black
$ black <file name>

혹 'cannot install' 에러가 발생하면 python3.6 이하 버전이라서 그런 것이다.
두 번째 명령어를 실행했을 때 formatting 이 적용되면 잘 설치된 것이다.

VSCode 에서 적용

settings.json 에 아래와 같은 설정들을 추가한다.

"python.linting.enabled": true,
"python.linting.lintOnSave": true,
"python.linting.flake8Enabled": true,
"python.linting.pylintEnabled": false,
"python.linting.flake8Args": ["--max-line-length=88", "--ignore=F401,E402"],
"python.formatting.provider": "black",
"python.formatting.blackPath": "/Library/Frameworks/Python.framework/Versions/3.10/bin/black",
"[python]": {
  "editor.defaultFormatter": null
}
"editor.formatOnSave": true,

여러 블로그나 참고 자료를 보면서 몇 번 시도했는데 적용이 되지 않던 이유를 정리하자면 아래와 같다.

  • black path 를 명시하지 않았었음
  • python 의 defaultFormatter option 을 초기화 하지 않았음

이전과 다르게 두 가지를 모두 추가하였고 formatting 이 저장과 동시에 잘 적용됨을 확인할 수 있었다.

참고로 기억할 것!

  • blackPath 는 명령어 'whereis black' 로 쉽게 확인할 수 있다.
  • 나는 Python 외 formatter 를 prettier 를 사용해서 default 가 prettier 로 되어있기 때문에 black 을 적용하려면 해당 값을 초기화 해줄 필요가 있다.
  • flake8Args option 을 위와 같이 설정한 이유는 black formatter 의 max line lengh default value 가 88인데, 이 옵션을 추가하지 않으면 flacke8 과 black 이 서로 conflict 를 낸다.

으아 아주 뿌듯한 마음으로 퇴근을 한다!!!
어우 이 간단한걸 몇 년을 미룬거야,,,

암튼 이 글이 미래의 나와 같은 문제를 겪는 다른 개발자 분들께 도움이 되면 좋겠다:)

profile
EWHA Cyber Security 19

0개의 댓글