오늘은 Python Linter에 대하여 알아보도록 하겠습니다!
1. Linter란?
린터(Linter)란 소스 코드를 분석하여 프로그래밍 오류, 버그, 스타일 오류, 의심스러운 구문등과 같이 잠재적인 문제점을 찾아내는 도구입니다. * 유래 : 1970년대에 C 언어 코드를 검사하는데 사용된 'Lint' 에서 유래!
Linter를 사용하는 이유는 뭘까요?
- 코드 품질 향상
- 코딩 표준 준수
- 버그 예방
- 개발 효율성 향상
Linter 는 프로그래밍 언어에 맞게 다양한 종류가 존재합니다. 오늘 저는 python 에서 사용되는 Linter 중
Pylint, Flake8, isort , black, Ruff 에 대하여 간단히 알아볼까 합니다!
2. Pylint
Pylint는 Python 코드의 오류, 스타일, 리팩토링 힌트 등을 찾아내는 Linter로 PEP 8과 같은 Python 코딩 표준을 준수하는데 초점을 맞추고 있습니다. 또 한 코드 품질 점수를 제공하여 개선할 수 있는 영역을 시각적으로 보여줍니다.
장점: 코드 품질과 일관성을 강화할 수 있는 포괄적인 검사 옵션을 제공하며 사용자 정의 규칙 및 플로그인을 지원
단점: 때때로 지나치게 엄격하거나 세세한 경고를 알려 과하게 느껴질 수 있음
3. Flake8
Flake8은 Pylint보다 가볍고 빠른 Linter로 PEP8 가이드 라인을 준수하며 코드의 복잡성을 측정합니다.
장점: 빠른 실행 속도, 다양한 플러그인 지원
단점: Pylint보다 덜 포괄적이며, 상세한 코드 검사 기능은 조금 부족
4. isort (import 정렬 특화)
isort는 Python 코드 내의 import 문을 자동으로 정렬해주는 도구로 코드의 가독성을 높이고 일관된 import style을 유지할 수 있게 도움을 줍니다.
장점: 코드의 가독성 향상, 다양한 정렬 스타일의 옵션 제공, 다른 Linter, Formatter들과 함께 쓰기 좋음
단점: import문에만 초점을 맞춤
5. Black
Black는 Python 코드를 자동으로 포메팅 하는 도구로 'Blackened' 코드 스타일을 적용, 코드의 일관성을 향상 시키고 포메팅에 대한 논쟁을 줄여줍니다.
장점: 일관된 스타일, 사용자 설정이 필요없는 단순한 사용법
단점: 사용자 설정이 매우 제한적이기에 Black 의 스타일에 한정 됨
Blackened 코드란?
Blackened 코드는 Black의 포매팅 규칙에 따라 포매팅된 코드를 의미합니다.
6. Ruff
Ruff는 Rust로 작성된 최신 Python Linter로 성능적으로 가장 다른 Linter에 비해 매우 빠른 특징을 가지고 있습니다. 코드 스타일 및 잠재적 오류를 검사하며, PEP 8 준수에 초점을 두고 있습니다.
장점: 매우 빠른 실행 속도, 사용하기 쉬운 인터페이스
단점: 신생 도구로써 Pylint, Flake8에 비해 커뮤니티 지원이 적을 수 있고 검사 기능에 차이를 보일 수 있음
7. 기능 별 Linter 비교
속도 및 효율성
- Ruff가 가장 빠른 실행 속도를 제공합니다.
- Flake8은 빠르고 가볍지만, Pylint는 더 많은 검사를 제공하면서 상대적으로 느릴 수 있다.
사용 편의성
- Pylint와 Flake8은 보다 많은 설정과 사용자 정의가 가능하다.
기능 범위
- Pylint는 가장 포괄적인 검사 기능을 제공한다.
- isort는 import 정렬에 특화되어 있다.
8. 결론
Import 정렬 - isort
코드 정렬 - Pylint, Flake8, black, Ruff
저의 경우 Linter를 목적에 맞게 함께 사용합니다.
"isort . && black . && ruff ."" 이런식으로 사용해서 코드를 정리합니다. ㅎ
Linter를 사용하면 코드가 깔끔해져 ㅎ 기분도 좋아집니다 ㅎ
예전에 Linter를 사용 하지 않을 땐 팀원들이 같은 규칙을 정했다고 하지만 코드가 정렬이 많이 달랐는데 Linter 사용 후에는
전체적으로 코드과 일관적이고 가시성 있게 변화되어 좋았습니다.
협업을 한다면 필수라고 보며! 혼자 개발한다해도 ㅎ 위에서 말했던 이유들로 사용하는게 좋다고 생각합니다!
Linter를 사용하는 이유는 뭘까요?
- 코드 품질 향상
- 코딩 표준 준수
- 버그 예방
- 개발 효율성 향상
'Python' 카테고리의 다른 글
파이썬 collections 모듈을 알아보자! (0) | 2023.12.14 |
---|---|
Poetry 2편 : Pyenv 와 Poetry로 가상환경 관리하기! (0) | 2023.12.08 |
poetry 1편 : poetry란? 의존성 관리하는 방법, 기본 사용법 및 설정 방법 (0) | 2023.12.07 |
pyenv 와 pipenv 를 사용한 python 가상환경 설정, 개발 환경 설정 (0) | 2022.01.18 |
vs code 와 docker를 사용한 컨테이너 개발 환경(Python) 구축 (0) | 2021.04.26 |