news 2026/9/3 10:24:52

Ruff的900+内置Lint规则全清单:一键替代Flake8、Pylint、Bugbear的终极规则集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ruff的900+内置Lint规则全清单:一键替代Flake8、Pylint、Bugbear的终极规则集

Ruff的900+内置Lint规则全清单:一键替代Flake8、Pylint、Bugbear的终极规则集

【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff

你是否还在同时维护 Flake8、Pylint、pycodestyle、isort、pyupgrade 好几个检查器?Ruff 是用 Rust 编写的极速 Python Linter(代码检查器)与格式化工具,内置900+ 条 Lint 规则,原生复刻了 Flake8 及其数十个流行插件(包括 flake8-bugbear、pylint 等)的规则集,速度快 10~100 倍,一条命令即可替换你现有的整套检查工具链。

为什么是 Ruff:一个工具替代五个

传统 Python 项目的代码质量检查往往要拼装一堆工具,各管一摊:

原有工具负责什么Ruff 对应规则前缀
Pyflakes未使用导入、未定义变量F
pycodestyle缩进、空格、行宽等风格E/W
flake8-bugbear隐蔽 Bug、坏味道B
pyupgrade语法现代化升级UP
isortimport 排序I
mccabe圈复杂度C90
pylint约定/错误/重构类检查PL
flake8-simplify代码简化建议SIM
pydocstyle文档字符串规范D

而 Ruff 把这些规则全部用 Rust 原生重新实现(而非调用插件),因此才能做到:扫描整个 CPython 级别的代码库只需几秒,甚至快到你"故意写错代码确认它真的在跑"。

Ruff 由 Astral 团队开发维护(该团队同时也是 uv 和 ty 的作者),被 Apache Airflow、FastAPI、Pandas、SciPy 等主流开源项目采用。

900+ 规则全清单:看懂规则代码系统

Ruff 沿用了 Flake8 的规则代码体系:1~3 个字母前缀 + 3 位数字(如F401)。前缀代表规则来源,这也是快速定位"某条规则属于哪个工具"的关键。

打开 crates/ruff_linter/src/rules/mod.rs 可以看到 Ruff 内置的59 个规则模块,以下是常用的前缀速查表:

核心前缀速查(按使用频率排序)

  • F— Pyflakes:未使用的导入、语法错误类问题(默认开启)
  • E/W— pycodestyle:错误与警告级风格问题(默认开启)
  • B— flake8-bugbear:如B006(可变默认参数)、B904(raise 应带 from)
  • UP— pyupgrade:如UP006typing.Listlist)(默认开启)
  • I— isort:import 排序与分组
  • SIM— flake8-simplify:如SIM105(可改用contextlib.suppress
  • PL— pylint:按严重度细分C(约定)/R(重构)/W(警告)/E(错误)
  • RUF— Ruff 自有规则,如RUF012(class-var 注解缺失)(默认开启)
  • C90— mccabe 圈复杂度,D— pydocstyle 文档字符串
  • S— flake8-bandit 安全(硬编码密钥、危险函数),N— pep8-naming 命名
  • PERF— perflint 性能,PT— flake8-pytest-style,TRY— tryceratops 异常处理
  • PTH— 建议改用 pathlib,RET— 返回值简化,FLY— f-string 转换
  • ERA— 注释掉的代码,TID— 导入整洁度,LOG— logging 规范

更多小众但实用的模块还包括:AIR(Airflow)、FAST(FastAPI)、PAND(pandas-vet)、NP(numpy)、DTZ(datetime 时区)、TCH(type-checking 导入)等,全部规则可查阅 docs/linter.md。

💡 想弄清某条规则的语义分类(Error/Warning/Convention/Refactor),可参考 crates/ruff_linter/src/upstream_categories.rs,它定义了各前缀与 Pylint 风格的严重度映射。

3 行配置:如何挑选你的规则集

Ruff 通过pyproject.toml中的lint.select/lint.ignore选择规则组,支持全码F401)或前缀F)两种粒度:

[tool.ruff.lint] # 启用 E、F 两个前缀的所有规则 select = ["E", "F"] # 单独关闭某条规则 ignore = ["F401"]

推荐的入门方案

官方在 docs/linter.md 中给出的建议:

  1. 零配置直接跑:Ruff 默认已开启FEBUPRUF等规则组,足以捕获未使用导入、常见 Bug 等问题;
  2. 渐进式加码:从小集合出发,逐组加入。最流行的"不啰嗦但够严格"组合是E+F+UP+B+SIM+I
  3. 谨慎使用ALL:它会启用全部 900+ 条规则,且每次升级都会隐式启用新规则(开启ALL时 Ruff 会自动禁用如D203D211这类相互冲突的文档字符串规则)。

一键修复:ruff check --fix

Ruff 的一大杀手锏是自动修复:大量规则(如删除未使用导入、现代化语法升级)不仅报错,还能直接改写代码。

ruff check # 检查当前目录 ruff check --fix # 自动修复可修复的问题 ruff check --watch # 监听文件变化,增量检查

配合内置缓存,未变更的文件不会重复分析,大型仓库的日常检查几乎无感。

快速上手:安装与最小配置

pip install ruff ruff check .

如果仓库是从 GitCode 获取的:

git clone https://gitcode.com/GitHub_Trending/ru/ruff

再写一个最小配置pyproject.toml

[tool.ruff.lint] select = ["E", "F", "UP", "B", "SIM", "I"]

到这里,你的项目已经获得了一个比 Flake8 快百倍、规则覆盖面却广得多的检查器。后续想加文档字符串规范(D)、安全扫描(S)、复杂度控制(C90),只需在select里补一个前缀。

总结:一张清单带走

你的需求Ruff 方案
替代 Flake8 + 一堆插件一套前缀覆盖 Pyflakes/pycodestyle/Bugbear 等 59 个规则模块
替代 Pylint 风格检查PL前缀 + 约定/重构/警告/错误四级分类
替代 isort / pyupgradeIUP前缀,且支持自动修复
大仓库性能瓶颈Rust 实现 + 内置缓存,10~100 倍速度提升
单条规则粒度的开关select/ignore精确到F401级别

核心要点一句话:先跑默认规则集,再按需追加前缀,最后用--fix让 Ruff 替你改代码。完整规则文档见 docs/linter.md,规则源码索引见 crates/ruff_linter/src/rules/。

【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 10:23:40

键盘副屏显示方案全解析:从驱动配置到自定义内容推送

最近总有朋友问我:刚入手的带副屏键盘,副屏要么不亮,要么一直显示默认 LOGO,要么想显示 CPU、内存、网速、歌词,却找不到一个完整的配置思路。按官方小工具只能改预设图,想自己写数据通道又不知道该从哪下手…

作者头像 李华
网站建设 2026/9/3 10:22:16

视频内容授权与合规管理:从素材台账到批量检查的落地流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 10:21:53

Actor-Critic算法Matlab实现:从原理到工程实践与Simulink集成

简介:本资源是面向强化学习初学者与Matlab实践者的Actor-Critic算法完整实现代码包,聚焦于连续/离散控制任务中的策略优化与价值评估协同训练问题,适用于高校学生、科研入门者及工程技术人员开展算法复现与原理验证。压缩包共10个文件&#x…

作者头像 李华
网站建设 2026/9/3 10:19:20

Spring Boot 2.6.3校园组团平台:从架构设计到性能优化的全链路实践

简介:本资源是一个基于Spring Boot 2.x构建的校园组团活动管理平台完整项目源码,面向Java后端初学者与高校Web开发实践者,旨在解决高校学生社团活动发布、组队报名、权限管理及动态展示等实际需求。压缩包共788个文件,涵盖109个Ja…

作者头像 李华