如何配置Ruff将百分号格式代码自动修复为f-string格式?
解决Ruff无法自动修复UP031(百分号转f-string)的问题
问题原因
UP031规则(建议用格式指定符替代百分号格式化)本身支持自动修复,但默认情况下Ruff不会自动启用该规则的修复能力,需在配置中明确开启。另外ruff format仅负责代码格式化,不处理lint规则的自动修复,必须使用ruff check . --fix命令来修复这类问题。
解决方案
修改你的pyproject.toml配置,添加fix.extend字段指定要开启修复的规则:
[tool.ruff] target-version = "py39" line-length = 120 extend-select = ["E501", "UP", "RUF"] fix.extend = ["UP031"] # 开启UP031的自动修复权限
验证修复
重新执行修复命令:
ruff check . --fix
你的示例代码:
print("%s" % "hello")
会被自动修复为:
print(f"hello")
额外说明
- 若需要开启所有已选中规则的自动修复,可添加
fix.all = true到配置中,但这种方式可能会修复部分你不想改动的规则,建议按需通过fix.extend指定具体规则。 - 确保
target-version不低于py36(f-string的最低支持版本),你的配置中已设置为py39,满足要求。
内容的提问来源于stack exchange,提问作者alanwilter
相关产品推荐
相关产品推荐

