포매터가 「스타일」을 다루면 linter는 「잠재적 버그·나쁜 패턴」을 찾습니다.
사용 안 한 변수, 정의 안 된 이름, 위험한 패턴 등을 사전 검출.
flake8.
가장 인기 있는 전통 linter.
pip install flake8.
flake8 myfile.py로 실행.
PyFlakes(에러 검출) + pycodestyle(PEP 8) + McCabe(복잡도) 통합.
빠르고 유용.
pylint.
더 엄격하고 광범위.
flake8보다 많은 검사를 하지만, 「false positive」(실제론 문제 없는데 경고)도 많음.
큰 프로젝트는 pylint 설정 조정에 시간 들이기도.
ruff.
다시 등장.
50배 빠르고 flake8 대부분 규칙을 지원 + 자동 수정(--fix)도 가능.
새 프로젝트는 거의 ruff.
ruff check로 검사, ruff check --fix로 자동 수정.
통합 — pre-commit.
위 도구들을 git commit 전 자동 실행 → 잘못된 코드는 커밋 자체가 안 됨.
「CI에서 발견되어 다시 푸시」하는 시간 낭비를 막음.
모던 파이썬 프로젝트의 표준 설정.
한 줄 요약
linter는 잠재적 버그·나쁜 패턴 검출.
flake8(전통)·pylint(엄격)·ruff(빠름·표준화 중).
pre-commit으로 commit 전 자동 실행이 모던 표준.
더 알아볼 것
- mypy — 타입 검사
- bandit — 보안 검사
- ruff 룰 카탈로그