
本文介绍如何通过 Ruff 的 --select 与 --fix 组合,精准修复特定 PEP/Flake8 规则(如未使用导入 F401),避免全局自动修正带来的意外变更。
本文介绍如何通过 ruff 的 `--select` 与 `--fix` 组合,精准修复特定 pep/flake8 规则(如未使用导入 f401),避免全局自动修正带来的意外变更。
Ruff 是一个极快的 Python 代码检查与自动修复工具,其设计强调可配置性与精确控制。当你只想修复某类问题(例如 F401 —— “imported but unused”),而非运行全部修复规则时,不应使用 ruff check --fix(默认启用所有可修复规则),而应显式限定目标规则。
✅ 正确用法:--select + --fix
语法如下:
ruff check --select <rule_code> --fix [PATH...]</rule_code>
-
--select指定要启用的规则(支持单个码、逗号分隔列表或前缀,如F401,F4*,F401,F841); -
--fix启用自动修复(仅对 Ruff 官方标记为 fixable 的规则生效); -
[PATH...]可选,不填则递归扫描当前目录及子目录;也可指定文件或文件夹。
? 实际示例
修复当前项目中所有 F401 违规(即删除未使用的 import):
ruff check --select F401 --fix
仅修复单个文件:
ruff check --select F401 --fix src/utils.py
同时修复多个规则(如未使用导入 + 未使用变量):
ruff check --select F401,F841 --fix
⚠️ 注意事项
-
--fix不会修改不可修复规则(如E501行长警告),仅作用于明确支持自动修复的规则(可通过ruff rule查看是否含Autofix: ✅); - 若需预览将要修复的内容而不实际写入,添加
--dry-run:ruff check --select F401 --fix --dry-run
- 配合
--unsafe-fixes可启用实验性修复(谨慎使用,可能改变语义); - 推荐在运行
--fix前提交 Git 快照,便于快速回退。
? 小结
精准修复 = 明确选择(--select)+ 主动触发(--fix)。这不仅提升修复安全性,也更符合团队协作中“最小变更”原则。将该命令集成至 pre-commit 或 CI 流程中,可确保每次提交仅清理目标问题,保持代码演进清晰可控。










