微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 pydocstyle 的 match-dir 标志过滤目录?

如何解决如何使用 pydocstyle 的 match-dir 标志过滤目录?

我想使用 pydocstyle 作为 pre-commit hook 检查项目的源代码文档字符串,即位于 /src 文件夹内的 .py 文件,当一个新的 git提交。为了仅检查 src 文件夹,我使用了 match-dir 选项,但是,它似乎不起作用并且有一个打开的 GitHub issue

pydocstyle documentation on pre-commit hook usage 之后,我将 pydocstyle 添加.pre-commit-config.yaml 文件中,如下所示:

repos:
- repo: https://github.com/pycqa/pydocstyle
  rev: 5.1.1
  hooks:
  - id: pydocstyle

从这里我尝试了两种方法来配置 match-dir 选项:作为命令行参数,以及在配置文件中。为了将 match-dir 作为命令行参数传递,我在 .pre-commit-config.yaml 中使用了 args 键,如下所示:

repos:
- repo: https://github.com/pycqa/pydocstyle
  rev: 5.1.1
  hooks:
  - id: pydocstyle
    args:
    - --match-dir='^(src)'

对于 configuration file 方法,我在项目的根目录创建了一个 .pydocstyle 文件,其内容如下:

[pydocstyle]
match_dir = ^(src)

当 pre-commit 运行并且 pydocstyle 检查项目中的所有文件时,这两种方法似乎对检查的目录没有影响。对此的任何帮助将不胜感激!

解决方法

预提交 passes filenames as positional arguments 到钩子

进行任何一次尝试,这意味着它将其称为:

pydocstyle --match-dir=^(src) file1.py file2.py src/file1.py src/file2.py

# with the configuration adjacent
pydocstyle file1.py file2.py src/file1.py src/file2.py

您会注意到 pydocstyle 始终运行传递给它的文件,独立于 --match-dir(仅在递归时使用)

您可以使用 pre-commitexclude / files 来限制传递给底层工具的内容:

repos:
- repo: https://github.com/pycqa/pydocstyle
  rev: 5.1.1
  hooks:
  - id: pydocstyle
    files: ^src/

免责声明:我是 pre-commit 的作者

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。