如何使用 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 的作者

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...