Ruff 是一个用 Rust 编写的 Python 代码检查与格式化工具:一条命令就能扫描整个项目的代码问题(linter 功能),也能自动统一代码风格(formatter 功能),官方定位是「极快」,常被用来替代 flake8、isort、black 等多个传统工具。2026 年 7 月 23 日,Ruff 发布 0.16.0,默认启用的检查规则从 59 条增加到 413 条,是该项目历史上最大的一次默认行为变更。此后项目以约每周一个版本的节奏迭代,最新版本 0.16.6 于 2026 年 9 月 3 日发布。
Ruff 是什么,适合谁用
Ruff 是 GitHub 上的开源项目 astral-sh/ruff,由 Astral 公司维护。它把 Python 开发中最常用的两类工具合二为一:
- linter(代码检查器):扫描代码,找出语法错误、未使用的变量、潜在 bug、不符合规范的写法;
- formatter(格式化器):自动调整代码的缩进、换行、引号等排版,让整个项目的风格统一。
适合写 Python 的开发者使用,尤其是维护多个项目、或团队协作需要统一代码风格的人。常见用法是把它接入 CI(持续集成,指代码提交后自动运行的检查流程),让每次提交都自动过一遍检查和格式化;也可以在本地命令行直接运行,提交前手动检查。
0.16.0:默认规则从 59 条增至 413 条
0.16.0 最重要的变化是默认规则集的大幅扩充:
- 默认启用的规则从 59 条增加到 413 条,主要来自 flake8、pyupgrade、pylint 等既有规则体系,开箱就能检查出更多问题;
- 同时把 18 条争议较大的 pycodestyle 与 pyflakes 规则(如 E401、E402、E721、F403 等)移出默认集,避免过度打扰;
- 格式化 Markdown 中的 Python 代码块:
ruff format现在能处理 Markdown 文档里以围栏代码块包裹的 Python 示例,默认开启; - 新增
ruff: ignore行尾注释:可以在代码行尾用注释单独忽略某条检查; ruff format --check支持 github、gitlab 等输出格式,方便在 CI 上直接显示格式差异注解。
0.16 系列后续版本:每周一次的小步快跑
- 0.16.1(7 月 30 日):修复多项规则误报;
- 0.16.2(8 月 6 日):修复 flake8-pyi 对 singledispatch 等函数的误报;
- 0.16.3(8 月 13 日):为 Linux、macOS、Windows 全平台启用 PGO 优化(一种编译期性能优化技术),内存分配器换成 mimalloc;
- 0.16.4(8 月 20 日):修复不支持 POPCNT 指令的旧款 Windows CPU 上的崩溃(POPCNT 是 CPU 的一种位运算指令);编辑器语言服务支持对 Jupyter Notebook 单元格做增量检查;
- 0.16.5(8 月 27 日):新增规则分类选择器(category selectors),可以按类别批量开启规则,不用一条条列编号;
- 0.16.6(9 月 3 日):修复 match 语句匹配时可能触发的崩溃,为 datetime 时区相关规则补充校验,还为 pytest 断言写法规则 PT020 新增自动修复。
升级建议
对 Python 开发者来说,0.16 系列值得更新:默认规则扩充后,新项目开箱就能获得更全面的检查;ruff: ignore 注释和分类选择器降低了配置成本;Markdown 代码块格式化对写文档、写教程的人尤其有用。升级到最新的 0.16.6 即可获得以上全部改进。需要注意的是,0.16.0 起默认规则大幅增加,升级后首次运行检查结果可能比之前多出不少提示,建议先查看新增规则,再决定如何配置。
如果你已经在用 Ruff,直接升级到 0.16.6;如果还没用过,这个累计约 4.96 万 star、保持周更频率的工具,是目前把代码检查和格式化统一起来的可靠选择。