ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Ruff 的 pydocstyle convention 怎么配置以执行 Google 或 NumPy 风格文档字符串规则

Ruff 的 pydocstyle convention 怎么配置以执行 Google 或 NumPy 风格文档字符串规则 Ruff 的 pydocstyle convention 怎么配置以执行 Google 或 NumPy 风格文档字符串规则【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff如果你的项目要求文档字符串遵循 Google 或 NumPy 风格例如从 flake8-docstrings 迁移过来原有配置使用--docstring-conventionnumpy需要让 Ruff 的ruff check按指定的 docstring 约定执行检查。做法是在配置文件中设置convention选项并显式启用Dpydocstyle规则前缀。完成配置后运行ruff check即可看到按对应约定报出的D规则诊断。在配置文件中设置 conventionconvention位于 pydocstyle 插件选项下接受三个取值google、numpy和pep257。由于D规则默认不启用需要同时显式启用D前缀。两种配置文件位置的写法如下。pyproject.toml对应 Google 风格[tool.ruff.lint] select [D] [tool.ruff.lint.pydocstyle] convention googleruff.toml两种文件功能等价ruff.toml可省略[tool.ruff]表头[lint] select [D] [lint.pydocstyle] convention google要执行 NumPy 风格规则把取值改为convention numpy即可。需要注意convention的工作方式设置某个约定后所有不属于该约定的D规则会被自动禁用。因此约定的作用是“以select [D]为全集再按约定裁剪”默认不设置convention时启用的规则仅由select决定。各约定实际生效的规则范围三种约定各自排除的D规则不同配置前可据此判断约定是否符合你的风格要求。以下清单来自 convention 选项定义PEP 257pep257包含全部D规则除D203、D212、D213、D214、D215、D404、D405、D406、D407、D408、D409、D410、D411、D413、D415、D416、D417、D420NumPynumpy包含全部D规则除D107、D203、D212、D213、D402、D413、D415、D416、D417Googlegoogle包含全部D规则除D203、D204、D213、D215、D400、D401、D404、D406、D407、D408、D409、D413。这也解释了为什么 Ruff 支持 convention部分 pydocstyle 规则本身相互冲突例如D203和D211代表两种互斥的 docstring 格式见 linter 文档约定机制可以自动剔除与所选风格冲突的规则。在约定之上增减规则官方推荐的工作流是先启用约定再在约定之上按需加严或放宽而不是放弃约定直接堆规则。放宽禁用约定内的某条规则例如不要求为每个函数参数写文档[tool.ruff.lint] select [ D, ] ignore [ # 放宽约定不要求为每个函数参数提供文档。 D417, ] [tool.ruff.lint.pydocstyle] convention google加严启用约定排除掉的某条规则。以 Google 约定为例D401要求文档字符串使用祈使句语气被排除在外可以写回select[tool.ruff.lint] select [ D, # 在约定基础上加严要求所有文档字符串使用祈使句语气。 D401, ] [tool.ruff.lint.pydocstyle] convention googleFAQ 示例采用上述写法convention 选项文档给出的等价方式是使用extend-select并通过完全限定的规则代码指定规则例如extend-select [D400]而不是D4或D40两种写法任选其一即可。运行并验证生效配置保存后运行ruff check。以 tutorial 中的项目为例启用D前缀和convention google后的实际输出如下文档示例$ uv run ruff check src/numbers/__init__.py:1:1: D104 Missing docstring in public package src/numbers/calculate.py:1:1: UP035 [*] Import from collections.abc instead: Iterable | 1 | from typing import Iterable | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035 | help: Import from collections.abc src/numbers/calculate.py:1:1: D100 Missing docstring in public module Found 3 errors. [*] 1 fixable with the --fix option.判断标准输出中出现了D100、D104这类D前缀诊断说明 pydocstyle 规则已按所选约定生效此前没有配置convention时这些诊断不会出现因为D默认未启用。如果不确定 Ruff 最终解析出了哪些设置可以查看具体文件的生效配置$ ruff check /path/to/code.py --show-settings该命令输出针对给定文件的 resolved settings可用于核对convention和规则选择是否如预期落地。限制与注意事项不设置convention时启用的D规则完全由select决定Ruff 不会替你裁剪冲突规则使用ALL启用全部规则时Ruff 会自动禁用相互冲突的 pydocstyle 规则如D203与D211这与 convention 机制是两条不同的路径按需选择其一即可convention只接受google、numpy、pep257三个值其余写法无效Ruff 不支持setup.cfg、tox.ini等 INI 配置文件约定只能写在pyproject.toml或ruff.toml中。更多细节可参考 FAQ 中关于 NumPy/Google 风格 docstring 的条目和 tutorial中启用 pydocstyle 规则的完整流程。【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表