使用 Ruff 进行 Python 代码格式化与静态检查

yumo6662周前 (09-01)技术文章13

随着 Python 项目的规模增大,保持一致的代码风格和高质量的代码变得尤为重要。Ruff 是一个现代、高性能、支持 lint 和格式化的 Python 工具,能帮助你快速发现并修复常见代码问题。

本文将介绍:


  • Ruff 的作用与工作原理
  • 如何安装与配置 Ruff
  • VSCode 等开发环境中的集成方式
  • 常用参数说明
  • 配置案例

1. 什么是 Ruff?

Ruff 是由 Astral 团队开发的一个 Python 静态检查器和格式化器,主打:

  • 速度极快(使用 Rust 编写)
  • 功能全面:集成 Flake8、isort、pycodestyle、autoflake、pylint 等常见工具的规则
  • 自动修复:支持大部分问题自动修复
  • 代码格式化:可以替代 Black 进行统一格式化

2. 安装 Ruff

使用 pip 安装 Ruff(建议加到开发依赖):

pip install ruff

3. Ruff 的工作原理

Ruff 的工作主要分为两个阶段:

阶段

命令

功能

Lint 检查(静态分析)

ruff check

分析代码错误、风格问题(未使用变量、导入顺序等)

自动格式化

ruff format

格式化代码(缩进、引号风格、括号等)

其中:

  • ruff check . --fix 可以自动修复大部分 lint 问题,包括删除未使用 import、合并重复导入等。
  • ruff format . 主要用于统一格式,不会做“语义删除”(比如不会删未使用 import)。

4. 项目结构建议

css


复制编辑
your_project/
├── pyproject.toml        ← Ruff 配置写在这里
├── .vscode/
│   └── settings.json     ← VSCode 编辑器配置
├── src/
│   └── main.py
└── tests/
    └── test_main.py

5. 配置 Ruff(pyproject.toml)

在项目根目录创建或编辑 pyproject.toml,加入以下内容:

[tool.ruff]
line-length = 88                  # 最大行长度
target-version = "py38"          # Python 目标版本
src = ["src", "tests"]           # 源码路径

[tool.ruff.lint]
select = ["E", "F", "I", "W"]     # 开启的规则类型
ignore = ["E501"]                # 忽略某些规则(如行太长)
fixable = ["ALL"]                # 允许自动修复的规则

[tool.ruff.format]
quote-style = "double"           # 使用双引号
indent-style = "space"           # 使用空格缩进

select常见规则分类:

规则代码

说明

E

pycodestyle(代码风格)

F

pyflakes(错误检测)

I

import 排序(类似 isort)

W

警告信息(如未使用变量)

6. 集成 VSCode

在 .vscode/settings.json 中配置如下,实现“自动保存时格式化 + 实时 lint”:

{
  "files.autoSave": "afterDelay",
  "files.autoSaveDelay": 1000,
  "editor.formatOnSave": true,

  // 使用 Ruff 格式化器
  "python.formatting.provider": "ruff",

  // 启用 Ruff lint
  "python.linting.enabled": true,
  "python.linting.ruffEnabled": true,
  "python.linting.ruffArgs": ["--fix"],

  // 保存时执行所有修复操作
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  }
}

7. 常用命令总结

命令

功能

ruff check .

检查代码(不修复)

ruff check . --fix

检查并修复问题(推荐日常使用)

ruff format .

格式化代码(等价于 Black)

相关文章

VScode中集成esp8266/32开发环境详解

引言 文章的起点源于一个小伙伴私信我,想了解如何在vscode中直接开发esp8266。vscode其轻便,小巧等优点越来越受各类程序员的喜爱。 前面我分别介绍了如何在Windows中使用msys32...

Windows下VSCode配置C++环境_配置vscode c语言环境

介绍本文介绍了如何在 Windows 10 下使用 VSCode 配置 C/C++ 环境,编译器采用 MinGW-w64(GCC 在Windows 下的支持)主要参考了微软 VSCode 官方文档配置...

VSCode MCP Server:改进开发流程,打造更智能、更能干的AI智能体

作者:Sebastian Petrus | 编译:小兰模型上下文协议 (Model Context Protocol, MCP) 是一种新的开放标准,它帮助 AI 模型使用通用接口与外部工具、数据源和...

VSCODE搭建python开发环境教程_vscode开发python怎么样

一、python 安装官方网站下载适合的软件安装包,右击以管理员权限运行。2选择第一项,将无法选择安装路径,只能使用默认安装路径。我们选择第二项自定义安装即Customize installation...

人生苦短,我要在VSCode里面用Python

轻沉 发自 浅度寺 量子位 出品 | 公众号 QbitAI在程序员圈子里,Visual Studio Code(以下简称VSCode)可以说是目前最火的代码编辑器之一了。它是微软出品的一款可扩展的轻量...

大语言模型学习PYTHONSTARTUP 变量详解及实用指南

一、概述PYTHONSTARTUP 是一个 环境变量,用于指定一个 Python 脚本路径。每当用户启动 交互式 Python 解释器(即 Python REPL,如在终端执行 python 或 py...