引言:Python代码工具的“文艺复兴”

长期以来,Python开发者们为了保证代码质量和风格统一,不得不依赖一个“工具全家桶”:

  • Flake8Pylint 来检查代码中的逻辑错误和不规范写法 (Linting)。
  • isort 来自动排序import语句。
  • Black 来自动格式化代码,确保风格一致。
  • …可能还有pyupgrade等其他工具。

这套组合虽然能用,但有几个痛点:

  1. :这些工具都是用Python写的,在大型项目上运行时,检查和格式化可能需要数秒甚至更久。
  2. 配置繁琐:你需要分别安装和配置每一个工具,并处理它们之间可能存在的冲突。

Ruff 的出现,彻底改变了这一局面。它是一个用Rust语言编写的、集多种功能于一身的超级工具。

为什么选择Ruff?

  • 快到离谱:Ruff的速度比现有的工具链快10-100倍。Linting和格式化几乎是瞬时完成,毫秒级响应。
  • 功能合一:它同时实现了Linter(代码检查)和Formatter(代码格式化)的功能,可以完全替代Flake8, isort, Black, pydocstyle等数十个工具。
  • 配置简单:一个ruff.tomlpyproject.toml文件就能搞定所有配置。
  • 兼容性好:它致力于与Black风格兼容,迁移成本极低。

步骤1:安装Ruff

首先,你需要在你的Python环境中安装Ruff。推荐在每个项目的虚拟环境中单独安装。

pip install ruff

步骤2:在VS Code中安装Ruff插件

  1. 打开VS Code。
  2. 进入扩展(Extensions)视图(快捷键 Ctrl+Shift+X)。
  3. 搜索"Ruff"。
  4. 找到由charliermarsh发布的官方插件,点击安装。

Install Ruff VS Code Extension

步骤3:配置VS Code实现“保存时自动操作”

这是提升幸福感的关键一步。我们希望在按下Ctrl+S保存文件时,Ruff能自动帮我们修复错误并格式化代码。

  1. 打开VS Code的设置(Settings)(快捷键Ctrl+,),选择“打开设置(JSON)” (Open Settings (JSON))。

  2. 在打开的settings.json文件中,添加或修改以下配置:

    {
        // ... 其他你的设置 ...
    
        "[python]": {
            // 设置Ruff为默认的格式化工具
            "editor.defaultFormatter": "charliermarsh.ruff",
            // 开启保存时自动格式化
            "editor.formatOnSave": true,
            // 开启保存时自动修复错误 (比如自动移除未使用的import)
            "editor.codeActionsOnSave": {
                "source.fixAll.ruff": "explicit"
            }
        },
    
        // 如果你希望Ruff接管Jupyter Notebook中的格式化
        "[jupyter]": {
            "editor.defaultFormatter": "charliermarsh.ruff",
            "editor.formatOnSave": true,
            "editor.codeActionsOnSave": {
                "source.fixAll.ruff": "explicit"
            }
        }
    }
    

配置解读:

  • editor.defaultFormatter: 告诉VS Code,对于Python文件,请使用Ruff插件来进行格式化。
  • editor.formatOnSave: 开启“保存时格式化”功能。
  • editor.codeActionsOnSave: 这是一个更强大的功能。"source.fixAll.ruff": "explicit"表示在保存时,执行Ruff提供的“全部修复”操作。这不仅包括格式化,还包括自动移除未使用的导入、自动合并可以合并的import语句等Lint修复。

步骤4:为你的项目配置Ruff (可选但推荐)

虽然Ruff开箱即用,但通过一个配置文件,你可以进行更细致的定制。在你的项目根目录下,创建一个pyproject.toml文件(这是现代Python项目推荐的配置文件格式),并添加Ruff的配置:

# pyproject.toml

[tool.ruff]
# 设置代码每行的最大长度
line-length = 88
# 指定要兼容的Python版本
target-version = "py39"

[tool.ruff.lint]
# 选择要启用的规则集。'E'和'F'是Flake8的规则(错误和逻辑问题)
# 'I'是isort的规则(import排序)
select = ["E", "F", "I"]

# 你可以忽略特定的规则
# ignore = ["F401"] # 例如,如果你想忽略“未使用的导入”错误

# 自动修复这些规则
fixable = ["ALL"]

[tool.ruff.format]
# Ruff的格式化工具目前是预览版,需要显式开启
# 它致力于与Black兼容
preview = true

有了这个文件,Ruff插件和命令行工具都会自动读取它,确保在任何地方(VS Code、CI/CD流水线)的行为都保持一致。

见证效果

现在,回到你的任何一个Python文件。

  • 实时错误提示:如果你写了一段不符合规范的代码(比如一个未使用的变量),Ruff会立刻用波浪线标出,鼠标悬浮即可看到错误信息。
  • 保存即格式化:试着把你的import语句顺序打乱,或者写一些缩进不正确的代码。按下Ctrl+S,代码会在瞬间被整理得井井有条。

总结

从多个工具的繁琐配置和缓慢等待,到单一工具的极速响应和简单配置,Ruff为Python开发体验带来了质的飞跃。通过在VS Code中正确配置Ruff,你可以将代码质量控制无缝地融入到编码的每一个瞬间,让你更专注于业务逻辑的实现,而不是代码风格的细枝末节。