Ruff作为Python生态中高性能的代码检查和格式化工具,支持通过配置文件灵活调整检查规则,其中就包括在指定目录中忽略特定规则的能力,能够满足不同模块差异化的代码质量要求。

Ruff基础配置说明
Ruff的配置文件支持pyproject.toml、ruff.toml、.ruff.toml三种格式,其中pyproject.toml是Python项目常用的统一配置文件,推荐优先使用。所有规则忽略相关的配置都需要在配置文件的对应段落中定义。
指定目录忽略特定规则的实现方式
要实现在指定目录中忽略特定规则,核心是使用Ruff配置中的per-file-ignores字段,该字段可以针对不同的文件路径匹配模式,设置对应的忽略规则列表。
配置语法说明
per-file-ignores的键值对格式为:文件路径匹配模式 = 要忽略的规则ID列表,多个规则之间用英文逗号分隔。路径匹配支持glob通配符,比如tests/*可以匹配tests目录下的所有文件,legacy/**可以匹配legacy目录及其所有子目录下的文件。
具体配置示例
假设我们的项目结构如下,需要在tests目录忽略PLR0913(函数参数过多)和PLR0915(函数过长)规则,在legacy目录忽略E501(行过长)规则:
# ruff.toml 配置示例 # 全局忽略的规则,所有文件都会生效 ignore = [] # 针对指定目录忽略特定规则 [per-file-ignores] # 匹配tests目录下的所有文件,忽略对应规则 "tests/*" = ["PLR0913", "PLR0915"] # 匹配legacy目录及其所有子目录下的文件,忽略对应规则 "legacy/**" = ["E501"]
如果使用pyproject.toml作为配置文件,写法如下:
# pyproject.toml 配置示例 [tool.ruff] # 全局忽略的规则 ignore = [] [tool.ruff.per-file-ignores] "tests/*" = ["PLR0913", "PLR0915"] "legacy/**" = ["E501"]
配置验证方法
配置完成后,可以通过以下方式验证配置是否生效:
- 在对应目录下创建包含违反目标规则的测试文件,执行
ruff check 目录路径命令,查看是否没有报出对应的规则错误 - 执行
ruff check --show-settings命令,查看输出的配置信息中per-file-ignores字段是否和我们的配置一致
比如我们在tests目录下创建一个包含过多参数的函数,执行检查命令:
# tests/test_demo.py
# 该函数有6个参数,违反PLR0913规则,但配置后应该不会被Ruff报出
def demo_func(a, b, c, d, e, f):
pass
执行ruff check tests/test_demo.py,如果没有输出PLR0913相关的错误提示,说明配置生效。
注意事项
需要注意per-file-ignores的路径匹配是相对于配置文件的路径,如果配置文件在项目根目录,那么路径直接写目录名即可。另外规则ID需要填写Ruff官方定义的完整规则ID,比如E501而不是E501_,可以通过ruff rule 规则ID命令查看规则的详细信息,确认ID是否正确。