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

boyanx2周前技术教程5

随着 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)

标签: css禁止复制

相关文章

17个CSS知识点整理

微信ID:WEB_wysj(点击关注) ◎ ◎ ◎ ◎ ◎◎◎◎◎一┳═┻︻▄(点击页底“阅读原文”下载源代码)● ● ●1、对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机...

Html源代码加密?

什么是Html源代码加密?使用JavaScript加密转化技术将Html变为密文,以此保护html源代码,这便是Html源码加密。 同时,这种加密技术还可实现网页反调试、防复制、链接加密等功能。应用场...

学会这5个方法,全网任意免费复制,告别付费复制

我们在网上搜索资料的时候,经常需要把有用的内容复制下来。但是,并不是所有的网站内容都可以复制、粘贴,有时候复制内容会弹出开通VIP,立即解锁文本内容。要么就是提示要付费,才能够复制内容。在这种情况下,...

网页禁止你复制粘贴?新同事教我这三招,全网内容随我复制

我们平常经常需要在网上查找资料,但是由于网站的限制,网页的内容经常没办法复制粘贴,只能自己一个字一个字手打,但这样效率实在太慢了,今天新同事教了我三个方法,轻松就可以直接复制网页内容,想复制哪里就复制...

如何复制网页上无法直接复制的文字?这五种方法你需要了解

在日常上网过程中,我们常常会遇到一些网页上的文字内容,出于版权保护或者其他原因,网站采取了技术手段限制文字的复制。然而,即使面对这样的限制,我们依然有办法提取出所需的文字内容。在这篇文章中简鹿办公介绍...

JS代码“隐形”加密

本文分享一种神奇的JS代码加密技术:能让加密的JS代码变的“隐形”,是真的隐形,让代码消失、不可见!效果展示eval("".split('\ufeff').map(fu...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。