返回

文章详情

Ruff v0.16.0 – 重要的新更新 – 默认规则从59增加到413

Hacker News2026年7月26日 09:01

Ruff v0.16.0 现在可以使用!可以通过 PyPI 安装,或者使用您选择的包管理器:uv tool install ruff@latest 提醒一下:Ruff 是一个极其快速的 Python 代码检查和格式化工具,使用 Rust 编写。Ruff 可以替代 Black、Flake8(以及数十个插件)、isort、pydocstyle、pyupgrade 等工具,并在执行速度上比任何单一工具快数十倍或数百倍。 迁移到 v0.16 # Ruff v0.16 有少量破坏性更改,允许大多数用户在不显著更改代码或配置的情况下进行更新。主要的例外将在下文中描述。 更好的默认规则集 # Ruff 现在默认启用 413 条规则,比之前版本的 59 条有了显著增加。自 Ruff 的默认规则集自 v0.1.0 以来,规则数量从 708 增长到 968。这些规则中有许多能够捕捉到严重问题,包括语法错误和运行时错误,但之前默认情况下并未启用。借助新的规则集,Ruff 将在没有任何配置的情况下向您指出这些问题及其他多个问题。即使您正在使用 select 或 extend-select,我们希望这也能引起您对之前尚未发现的有用规则的关注。启用规则的完整列表过长,不便在这里列出,但您可以在我们新更新的文档中查看默认规则页面。亮点包括流行的 flake8-bugbear (B) 和 pyupgrade (UP) 代码检查工具的规则,以及我们自己 RUF 类别的规则。如果您想恢复到旧的默认设置,可以使用以下配置轻松选择旧规则: [ lint ] select = ["E4", "E7", "E9", "F"] 我们将这项工作视为与我们长期以来的规则分类重组目标紧密相关,因此请期待该领域的后续发展。 v0.16 的新功能 # Ruff v0.16 还包括以下一些新稳定的特性。 Markdown 代码块格式化 # Ruff 现在可以格式化嵌入在 Markdown 文件中的 Python 代码块。 在这些文件中,Ruff v0.16 将格式化使用 python、py、python3、py3、pyi 或 pycon 信息字符串的封闭代码块。pyi 块的格式与存根文件相似,pycon 块格式类似于 REPL 会话,而其他块使用正常的 Python 文件格式。例如: # README 这是一个示例: ```py import ruff ruff_binary = (ruff.find_ruff_bin()) ``` 当运行 ruff format 时,这会被重新格式化: 这也可以用于格式化 Quarto 笔记本,因为 Ruff 在花括号包围的情况下仍然识别语言(例如 ```{python})。请注意,如果您的 Quarto 文件使用 .qmd 扩展名,您可能需要配置扩展映射。如果您需要抑制格式化,您有几个选择。如果您希望抑制注释出现在代码块中,您可以在代码块本身内使用普通的 fmt: off 和 fmt: on 注释,或者可以使用类似的 HTML 注释来禁用整个文档区域的格式化: # README <!-- fmt: off --> ```py x = " this will be suppressed " ``` <!-- fmt: on --> 要完全抑制 Markdown 格式化,您可以使用普通的 extend-exclude 设置来排除所有 Markdown 文件,例如使用 *.md 的全局匹配模式。有关更多详细信息,请参见完整文档。 ruff: ignore 注释提供了新的抑制功能 # Ruff 现在有了自己的抑制注释格式,可以单独使用。 在 v0.15 中,Ruff 代码检查器通过成对的 ruff: disable 和 ruff: enable 注释获得了范围抑制机制,与上述的 fmt: off 和 fmt: on 对相似: # ruff: disable[N803] def foo(legacyArg1, legacyArg2, legacyArg3, legacyArg4): ... # ruff: enable[N803] Ruff v0.16 在此基础上添加了两个额外的 ruff 抑制注释。ruff: ignore 可用于抑制同一行上的诊断,就像 noqa 一样,或在接下来的逻辑行上: import math # ruff: ignore[F401] # ruff: ignore[N803] def foo(legacyArg1, legacyArg2, legacyArg3, legacyArg4): ... 在这种情况下,逻辑行跨越整个函数头(从 def 到冒号),因此 ruff: ignore 抑制了与上述 disable/enable 对相同的 N803 诊断。ruff: file-ignore 注释可用于抑制整个文件的诊断,就像 ruff: noqa 注释一样: # ruff: file-ignore[F401] 允许在此文件中未使用的导入 import foo import bar import baz 正如这个示例所示,每种类型的注释都可以有一个关联的 "理由",说明添加这些注释的原因,例如:允许在此文件中未使用的导入。ruff: ignore 注释可以通过新的 --add-ignore CLI 标志自动添加,且在预览中,所有这些 ruff 抑制注释都支持规则名称而非代码: ❯ echo ' import math ' > try.py ❯ uvx ruff@latest check --preview --add-ignore try.py 添加了 1 个忽略注释。 ❯ cat try.py import math # ruff: ignore[unused-import] 您可以在文档中找到所有这些注释的完整规范。修复现在在 check 和 form 中显示。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡