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

How to filter directories using the match-dir flag for pydocstyle?

我想使用 pydocstyle as a pre-commit hook to check a project's source code docstrings, i.e. .py files located inside the /src folder, when a new git commit is made. To check only the src folder, I used the match-dir option, however, it appears to not work and there is an open GitHub issue

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

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)

这两种方法似乎对预提交时检查的目录没有影响 运行 并且 pydocstyle 检查项目中的所有文件。如有任何帮助,我们将不胜感激!

预提交 passes filenames as positional arguments 到 hooks

你的任何一次尝试都意味着它是这样称呼它的:

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/

免责声明:我是预提交的作者