최근 수정 시각 : 2025-12-25 02:44:40

Ruff

Ruff
<colbgcolor=#fff,#1f2023><colcolor=#3EB049> 종류 코드 포맷터/린터
개발 Astral Software Inc.
출시일 2022년 08월 28일[1]
최신 버전 v0.14.10
사용 언어 Rust
공식 웹사이트 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg
1. 개요2. 특성3. 여담


1. 개요

#!syntax sh
# Ruff 설치 (pip)
pip install ruff

# 현재 디렉토리의 모든 파이썬 파일에 대해 린팅 실행 (자동 수정 포함)
ruff check . --fix

# 현재 디렉토리의 모든 파이썬 파일에 대해 포맷팅 실행
ruff format .

Ruff는 Rust로 작성된 극도로 빠른 Python 코드 린터(linter) 및 코드 포맷터(formatter)이다. 기존의 파편화된 Python 린팅 및 포맷팅 도구들[2]을 하나로 통합하고 훨씬 빠른 속도로 대체하는 것을 목표로 한다.

Ruff는 단일 바이너리로 제공되며, 수많은 린트 규칙을 기본적으로 지원하고, pyproject.toml[3][4] 파일을 통해 간편하게 설정을 관리할 수 있다. 매우 빠른 속도 덕분에 대규모 프로젝트에서도 실시간에 가까운 피드백을 제공하며, 개발 생산성을 크게 향상시킨다.

2. 특성

  • 속도: Rust로 구현되어 기존 Python 기반 도구들보다 수십 배에서 수백 배[5] 빠른 성능을 제공한다. 린터의 경우 성능 차이가 크게 체감되고, 포맷터의 경우 특성상 코드베이스 전체 포맷이 아닌 이상 black 등 기존 툴들과 속도 체감이 크게 나는 것은 아니다. 다만 로컬에서 개발할 때 그렇다는 것이지 대부분 코드베이스 단위 포맷이 필요한 CI 환경에서는 수만 밀리세컨드만 줄일 수 있어도 체감적으로도 큰 향상이다.
  • 통합된 기능: 린터와 포맷터 기능을 모두 포함하고 있어, 여러 도구를 별도로 설치하고 설정할 필요가 없다. Flake8, isort, pyupgrade, pydocstyle, Black 등 다양한 도구의 기능을 포괄적으로 지원한다.
  • IDE 통합: VS Code, PyCharm 등 주요 코드 편집기 및 IDE에서 확장 기능을 통해 연동되어, 실시간 피드백을 받을 수 있다.

3. 여담

  • Ruff의 등장으로 인해 Python 커뮤니티의 린팅 및 포맷팅 도구 사용 환경에 큰 변화가 일고 있다. 기존에 여러 도구를 조합해서 사용하던 복잡함이 Ruff 하나로 상당 부분 해소되었기 때문이다.
  • Ruff는 린터 기능이 먼저 개발되었고, 이후 포맷터 기능이 추가되었다. 초기에는 린터로서의 강력함과 속도로 주목받았으며, 포맷터 기능 추가 이후 완전한 올인원 도구로 자리매김하고 있다.
  • 동일 개발사에서 내놓은 Python 프로젝트 매니저인 uv의 출시와 메타에서 진행중인 Pyrefly 프로젝트로 인해 Python 개발환경을 Rust 기반으로만 구성하는 것이 가능해졌다. 포맷터 + 린터는 Ruff, 타입 체커는 Pyrefly, 패키지 + 가상환경 관리는 uv로 구성하는 식으로.

[1] pypi 릴리즈 기준[2] Flake8, isort, Black, Pylint 등[3] Python 표준[4] 필요시 ruff.toml로 관리할 수도 있다.[5] 공식 벤치마크 기준. 실제로 pylint 등 기존 툴보다 기본 수십 배 차이나는 성능을 볼 수 있다.