用途:Ruff 同时充当 Python 代码检查器(linter)与格式化器(formatter)。linter 用 ruff check,可替代 Flake8 及其插件、isort、pyupgrade、bandit、pydocstyle 及部分 Pylint;formatter 用 ruff format,可替代 Black。它不进行类型检查,类型检查属于 Astral 的另一工具 ty(uv 为包管理器)。
主要能力:规则众多(0.16.3 约 969 条),提供自动修复与修复安全性分级(safe/unsafe/display-only);支持预览规则独立开关;配置文件可为 pyproject.toml([tool.ruff])、ruff.toml 或 .ruff.toml,配置发现为“最近文件优先”而非级联,可用 extend 继承;支持 noqa 与 ruff: ignore/disable 等抑制机制,并可用 RUF100 清理失效抑制;输出格式丰富(concise、json、junit、github、gitlab、sarif 等)。
使用方式(命令保持原样):ruff --version;uvx ruff@latest ...;uv tool install ruff;日常用 ruff check [PATH]、ruff check --fix、ruff format [PATH],CI 中用 ruff format --check。注意 select 会替换默认规则集,需追加时用 extend-select;ruff check --fix 只应用安全修复。
适用场景:本地与 CI 的 Python 代码检查与格式化、pre-commit 钩子、现有代码库渐进式引入(先 --statistics 评估,再 --fix,再 --add-noqa 基线化,最后用 RUF100 收紧)。
限制:版本策略特殊,MINOR 为破坏性变更,可复现场景应固定版本(如 required-version = "==0.16.3");部分规则受 preview 开关控制;formatter 与某些 lint 规则存在冲突;--add-noqa 会就地改写源码并退出 0,属基线化工具而非修复器;ruff format 也可处理 Jupyter 与 Markdown 代码块,可能改写非预期文件,可用 exclude 关闭。资料未提供收费、价格与平台信息。