Ruff

Ruff 是 Astral 公司用 Rust 编写的极速 Python 代码检查和格式化工具,替代 Flake8、Black、isort 等。

#type / concept #status / evergreen #tech / dev #resource / python

[!info] related notes

Ruff

一句话定义

Ruff 是 Astral 公司(开发了 uv 的团队)用 Rust 编写的极速 Python 代码检查(Linting)和格式化(Formatting)工具,旨在替代 Flake8、Black、isort 等传统工具。

核心内容

解决什么问题

传统 Python 代码质量工具的问题:

  • 速度慢:Flake8、Black 等工具运行缓慢
  • 工具分散:需要同时使用多个工具(Flake8 + Black + isort)
  • 配置复杂:每个工具都有自己的配置文件

核心优势

极速性能

  • Rust 编写,比传统工具快 10-100 倍
  • 可以在保存时实时检查和格式化

统一工具

  • 替代 Flake8(代码检查)
  • 替代 Black(代码格式化)
  • 替代 isort(import 排序)
  • 支持 700+ 条规则

与 Pylance 完美配合

  • Ruff 负责格式化和检查
  • Pylance 负责类型检查和智能提示
  • 两者分工明确,不冲突

最小例子

安装 Ruff

# 使用 uv 安装
uv add --dev ruff

# 或使用 pip
pip install ruff

基本使用

# 检查代码
ruff check .

# 自动修复可修复的问题
ruff check --fix .

# 格式化代码
ruff format .

VS Code 配置

.vscode/settings.json 中配置:

{
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.fixAll": "explicit",
      "source.organizeImports.ruff": "explicit"
    }
  }
}

边界与易混淆点

与 Pylance 的分工

功能RuffPylance
代码格式化✅ 主要负责❌ 不负责
Linting 检查✅ 主要负责⚠️ 部分支持
类型检查❌ 不负责✅ 主要负责
代码补全❌ 不负责✅ 主要负责
Import 排序✅ 主要负责⚠️ 可能冲突

常见误解

  • 误解:Ruff 和 Pylance 会冲突
  • 事实:只要配置正确(如上),它们是黄金搭档
  • 误解:Ruff 只能检查代码
  • 事实:Ruff 既能检查(Linting)也能格式化(Formatting)

适用场景

  • 所有 Python 项目(强烈推荐)
  • ✅ 需要极速代码检查和格式化
  • ✅ 需要替代多个传统工具(Flake8、Black、isort)
  • ✅ 与 uv 配合使用,打造现代化 Python 工具链

相关链接

创建于 2026/3/24 更新于 2026/5/27