sxxk2
_
sxxk2
전체 방문자
오늘
어제
  • all (19)
    • Development (6)
      • Python (4)
      • Django (1)
    • Computer Science (11)
    • Others (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sxxk2

_

isort, black, flake8 사용하기 - 1
Development/Python

isort, black, flake8 사용하기 - 1

2022. 7. 11. 12:56

1. isort, black, flake8 사용하기 - 1

2. isort, black, flake8 설정하기 - 2

3. pre-commit 사용하기 - 3


여러 개발자와 협업을 진행하면서, 코드의 스타일과 컨벤션을 일정하게 맞추기란 결코 쉽지 않습니다.

아무리 유념하며 코드작성을 해보아도 어쩌면 간단한 실수로도 놓칠 수 있는것이 이러한 컨벤션입니다.

 

아래 소개해드릴 세가지 도구들을 적절히 사용한다면 아주 쉽게 코드의 일관성을 지키며 개발자들은 코드 작성 자체만 집중할 수 있도록 도와줍니다.

 

 

isort

- import를 알파벳순, 유형별, 섹션별로 자동으로 정렬해줍니다.

 

black

- PEP8을 기반으로 가독성이 더 좋은 코드스타일로 자동으로 변환해주는 포맷터입니다.

 

flake8

- black과 유사하나, 자동변환 기능은 없고 체크만 할 수 있습니다.

 

 

여기서 black과 flake8의 사용성이 비슷해보이지만 같이 사용하는것에 대해 의문이 생길 수 있는데, 

우선 formatter는 코드의 양식을 맞춰주는것이지 오류를 수정해주는 툴이 아닙니다.

또한 두가지의 툴이 한쪽에서 체크가 불가능한것이 다른쪽에서 체크가 가능하듯 상호보완적관계에 있어 같이 사용합니다.

 

저는 사용 순서를 isort - black - flake8으로 사용을해 충분한 formatter의 지원을 받고,

flake8에서 체크해준 오류는 직접 수정을 하고있습니다.

 

사용방법은 아주 간단합니다.

라이브러리를 설치하고, 별 다른 과정 없이 실행하면 됩니다.

 

아래의 예시는 pipenv를 사용했습니다.

pipenv를 사용하지않는다면 pip install name 으로 진행하시면 됩니다.

 

pipenv install isort
pipenv install black
pipenv install flake8

설치가 되었다면,

 

isort .

black .

flake8 .

 

간단한 명령어로 실행이 가능합니다.

 

 

isort


isort .

 

(위) isort 실행 전

(아래) isort 실행 후

 

import가 끝난 후 2칸의 공백을,

import 사이의 불필요한 공백을 제거하고 알파벳순, 숫자순으로 자동으로 정렬해줍니다.

 

 

black


(위) black 전

(아래) black 후

 

불필요한 공백과 따옴표가 ' -> "로 일괄수정되었습니다.

 

flake8


앞서 설명드렸다시피 flake8은 자동수정기능이 없습니다.

세팅해둔 조건에 맞지 않는것을 모두 잡아 위치와 라인, 간단한 메세지를 보여주며 직접 수정해야합니다.

 

 

 

위의 실행 예시는 코드스타일관련 라이브러리를 전혀 사용하지 않았던 가장 처음에 했었던 프로젝트에 테스트해봤습니다.

글자수 제한 변경, 린트&포매터 예외설정과같은 설정은 다음포스트에 다루겠습니다.

 

 

 

이 3가지 툴들을 한번에 사용하게 도와주는 pre-commit 라이브러리에 대해서도 추후 포스트하겠습니다.

'Development > Python' 카테고리의 다른 글

pre-commit 사용하기 - 3  (0) 2022.07.12
isort, black, flake8 설정하기 - 2  (0) 2022.07.12
Pipenv로 가상환경과 패키지를 한번에 관리하기  (0) 2022.07.11
    'Development/Python' 카테고리의 다른 글
    • pre-commit 사용하기 - 3
    • isort, black, flake8 설정하기 - 2
    • Pipenv로 가상환경과 패키지를 한번에 관리하기
    sxxk2
    sxxk2

    티스토리툴바