Ref :
python - flake8, Black 도입, pre-commit & clean code-style 실천하기
PEP 8 기준 python code style tool - Linter로 사용할 수 있는 flake8 그리고 조합이 좋은 black을 살펴보고 pre-commit 까지 설정해보자.
velog.io
깃허브에서 협업을 하기 위해 중요한 요소중 하나는 컨벤션을 지키는 것이다. 내가 작성한 코드보다 남들이 작성한 코드를 읽기 어려운게 이상한일이 아니다. 사람마다 작성하는 스타일이 다를 수밖에 없기때문에 그런건데, 이렇게되면 예를 들어 리뷰를 할 때 가독성이 떨어지게되고 이는 결국 시간낭비로 이어질 수 있다.
flake8, isort, black 모두 코드의 일관성을 유지시키는 도구이다.
pre-commit은 위와 같은 도구들로 git commit 전에 자동으로 실행할 수 있게하는 프레임워크이다.
Flake8
파이썬 코드의 스타일, 퀄리티를 검사하는 린터(linter)로, 핵심적인 기능들은 아래와 같다.
- PEP8 스타일 가이드를 준수하고있는지 여부를 확인
- 구문 오류 검사 및 논리적 오류 검사
- 복잡도 검사
Flake8은 코드의 문제점을 지적질만 한다. 맘에 안든다고 자기가 자동으로 수정하지는 않는다.
Isort
isort는 파이썬의 import문을 정렬하고 구성하는 도구이다.
단위가 큰 프로젝트는 import하는 라이브러리등의 수도 자연스레 많아지는데, import하는 라이브러리의 순서나 구분과 같은 것도 컨벤션이다.
주로 아래와 같은 식으로 정렬시킨다.
- import문 알파벳순으로 정렬
- import문 섹션별로 그룹화(e.g. 표준 라이브러리, 서드파티 라이브러리, 로컬 모듈 등)
- 불필요한 import 제거
Black
black은 파이썬 코드의 포맷터로, 핵심 기능들은 아래와 같다.
- 코드를 일관된 스타일로 자동 포맷팅
- PEP8 스타일 가이드를 준수함
이건 사용자 설정이 거의 없다. 사용자가 관여할 여지를 거의 두지 않아서 논쟁의 여지가 적다.
Pre-commit
pre-commit은 git hook을 관리하기 위한 프레임워크로, 주된 기능은 아래와 같다.
(hook이란 특정 이벤트에 특정 스크립트를 실행하는 기능이다.)
- commit전에 지정된 검사를 자동으로 실행
- YAML파일로 쉽게 설정할 수 있음
pre-commit-config-yaml파일에 설정을 정의해두고, pre-commit install 명령어를 통해 git hook을 설치하면, 이 후 커밋을 시도할때마다 지정된 검사를 자동으로 실행시킬 수 있다.
Ruff와 Make
Ruff는 Flake, Black, Isort와 같은 포매팅 도구로, 셋 다 섞어놓은 좋은 놈이라고 보면 된다.
Make도 개발 과정에서 자주 사용되는 도구지만, 위 도구들과는 목적이 다르다.
Make
make는 소프트웨어 빌드 자동화 도구로, 주로 C/C++ 프로젝트에서 자주 쓰이지만 이것 외에도 다양한 언어나 프로젝트 타입에 적용이 가능한 범용적인 빌드 도구이다.
- Makefile을 사용하여 소프트웨어 컴포넌트들의 컴파일 및 링킹 방법 정의
- 프로그램의 어떤 부분을 recompile해야하는지 자동으로 결정
- 대규모의 소프트웨어 프로젝트의 복잡한 빌드 프로세스를 단순화시켜줌
정리하면,
Flake8/Isort/Black/Ruff -> 포매팅 도구
Make -> 빌드 프로세스 자동화 도구
정도로만 알아두자.
'유틸리티' 카테고리의 다른 글
요즘 근황 & 중간 회고 & 앞으로 목표 (0) | 2025.03.04 |
---|---|
[오류 해결] GPU 있는데 torch.cuda.is_available()이 False를 반환할 때 (3) | 2024.11.06 |
[유틸리티] 부스트캠프 중간 회고 (0) | 2024.11.06 |
[Streamlit] Streamlit 세션 관리 (0) | 2024.11.05 |
[유틸리티] 10x 개발자가 되는 방법(원문 : How to be a 10x Software Engineer) (1) | 2024.11.04 |