flake8을 린터로 사용하고 black을 코드포매터로 사용하고 있는데 ruff는 이 두가지 역할을 모두하며 매우 빠르다. (추가로 isort도 사용하는데, ruff를 사용하면 다 대체 가능)
그냥 ruff 만을 사용하면 되는 수준이다.
그리고 다양한 곳에서 사용중이다. (검증이 되었단 소리)
Github Star 수도 급격히 증가하고 있다.
1. 설치
pip를 통해 간단히 설치할 수 있다.
pip install ruff
2. 사용법
Check
ruff
위는 명령어는 현재 디렉토리 하위의 .py 파일을 검사한다.
check가 생략된 것으로 검사만을 수행한다.
Fix
ruff --fix
check된 내용을 알아서 수정해준다.
3. 설정 (Custom)
ruff의 설정은 당연히 CLI의 argument로 할 수 있지만 일반적으로 pyproject.toml
혹은 ruff.toml
파일을 통해 설정할 수 있다.
poetry를 사용하면 pyproject.toml
에 한번에 관리하는 게 좋을 거 같다고 생각된다.
[tool.ruff]
# Line의 최대 length
line-length = 79
다양한 설정은 https://docs.astral.sh/ruff/configuration/ 에서 확인할 수 있다.
그리고 pre-commit으로 설정해서 사용하려면 https://github.com/astral-sh/ruff-pre-commit 여기를 확인하면 된다