问题描述
我想使用 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-commit
的 exclude
/ files
来限制传递给底层工具的内容:
repos:
- repo: https://github.com/pycqa/pydocstyle
rev: 5.1.1
hooks:
- id: pydocstyle
files: ^src/
免责声明:我是 pre-commit 的作者