用途:在 Python 项目中用 ruff 做代码检查(ruff check)、格式化(ruff format)和依赖分析(ruff analyze graph)。ruff 是单个 Rust 二进制,替代 Flake8、Black、isort、pyupgrade 等工具。
主要能力:内置语言服务器 ruff server,取代已归档的 ruff-lsp;支持规则选择、自动修复、noqa 抑制、预览规则和依赖图分析。
使用方式:可用 uv run ruff ...(项目依赖)、uvx ruff ...(一次性最新版)或全局 ruff ...。默认规则仅 E4、E7、E9、F,通常需扩展。select 会替换默认集,extend-select 则追加。修复时 ruff check --fix . 只应用安全修复,--unsafe-fixes 包含不安全修复,--diff 可先预览。格式化配置在 [tool.ruff.format] 下,如 quote-style、indent-style、docstring-code-format。
适用场景:新项目、库或开源项目、遗留项目增量迁移,以及选择性测试、死代码和循环导入检测。
限制:不支持第三方 Flake8 插件;不做类型检查(用 ty)或包管理(用 uv);与 Black 存在有意差异;格式化与部分 lint 规则冲突,需忽略 W191、E111、E114、E117、D206、D300、Q000-Q004、COM812、COM819 等;E501 可能因注释、长字符串或 URL 无法自动换行;--fix 即使安全也可能破坏动态 Python 代码,需审查 diff;子配置使用 select 会丢弃父级 ignore;TCH 已更名为 TC;ruff-lsp 已废弃,应使用 ruff server。具体版本、规则目录和完整配置以实际安装的二进制为准。