Ruff - 极速 Python 代码检查和格式化工具

Ruff 是一个用 Rust 编写的极速 Python 代码检查(linting)和格式化(formatting)工具。它的目标是成为比现有工具(如 Flake8、Black、isort 等)快几个数量级,同时将更多功能集成到一个统一的界面下。

如果您厌倦了等待 Flake8、isort 或 Black 运行完成,那么 Ruff 绝对值得一试。它的速度优势可以显著提升您的开发效率和工作流程。

为什么选择 Ruff?

传统的 Python 代码检查和格式化工具通常是用 Python 本身编写的,这在性能上存在一定的限制。Ruff 利用 Rust 的高性能特性,实现了惊人的速度提升。

  • 极速: 比现有工具快 10-100 倍,甚至更快。
  • 功能集成: 可以替代 Flake8(及其大量插件)、isort、Black、pydocstyle、pyupgrade、autoflake 等多种工具。
  • 统一接口: 通过一个命令 (ruff) 完成多种任务,简化了工具链。
  • 易于安装和配置: 通过 pip 安装,支持 pyproject.toml 进行配置。

主要特性

  • Rust 实现: 带来卓越的性能。
  • pip 安装: 方便快捷。
  • 支持 pyproject.toml: 现代 Python 项目的标准配置方式。
  • Python 3.13 兼容: 紧跟 Python 版本更新。
  • 与现有工具高度兼容: 可以作为 Flake8、isort、Black 的直接替代品。
  • 内置缓存: 避免重复分析未修改的文件。
  • 自动修复: 支持自动修复多种代码问题(例如,移除未使用的导入)。
  • 超过 800 条内置规则: 原生实现了许多流行的 Flake8 插件规则,如 flake8-bugbear 。
  • 编辑器集成: 为 VS Code 等编辑器提供官方支持。
  • Monorepo 友好: 支持分层和级联配置。

速度有多快?

Ruff 的速度是其最大的亮点。以下是一些来自社区的评价 :

  • FastAPI 创建者 Sebastián Ramírez: “Ruff 太快了,有时候我会在代码中故意添加一个 bug,只是为了确认它确实在运行并检查代码。”
  • Elementl 创始人 Nick Schrock: “为什么 Ruff 是一个游戏规则改变者?主要是因为它快了近 1000 倍。字面意思。不是打字错误。在我们最大的模块(dagster 本身,25 万行代码)上,pylint 需要大约 2.5 分钟,在我的 M1 上并行使用 4 个核心。对我们整个代码库运行 ruff 只需 0.4 秒。”
  • isort 创建者 Timothy Crosley: “刚把我的第一个项目切换到 Ruff。到目前为止只有一个缺点:它太快了,我直到故意引入一些错误才相信它在工作。”

安装

使用 pip 安装 Ruff 非常简单 :

1
pip install ruff

基本用法

安装完成后,您可以在终端中使用 ruff 命令。

代码检查 (Linting):

检查当前目录下的 Python 文件:

1
ruff check .

检查并自动修复代码问题:

1
ruff check . --fix

代码格式化 (Formatting):

格式化当前目录下的 Python 文件:

1
ruff format .

格式化并预览修改,但不实际写入文件:

1
ruff format . --check

配置

Ruff 主要通过项目的 pyproject.toml 文件进行配置。您可以在其中指定要启用的规则、忽略的文件、Black 兼容性设置等 Source.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# pyproject.toml
[tool.ruff]
# 启用所有默认规则,以及一些额外的规则
select = ["E", "F", "W", "I", "B", "C4", "ISC", "N", "UP"]
ignore = ["E501"] # 忽略行长度检查

# 配置 Black 兼容性
line-length = 88

# 排除文件或目录
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".hg",
".mypy_cache",
".nox",
".pants.d",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
]

[tool.ruff.format]
# 配置格式化选项 (与 Black 类似)
quote-style = "double"
indent-style = "space"
line-ending = "lf"

结论

Ruff 凭借其惊人的速度和强大的功能集成,正在迅速成为 Python 生态系统中首选的代码检查和格式化工具。它能够替代多种现有工具,简化开发流程,并显著提高代码质量检查的效率。如果您追求更快的反馈循环和更简洁的工具链,强烈推荐您尝试 Ruff。

更多资源


© 2025 vmoranv 使用 Stellar 创建


😊本站2025.05.05日起🎉累计访问人次💻


614447.xyz