如何为不同文件列表配置不同的pre-commit钩子
解决方案
要实现isort和black处理所有文件、仅flake8作用于指定白名单文件的需求,你需要调整配置的层级:
关键问题说明
你之前出现警告是因为把files配置放在了repo级别(flake8的repo节点下),而files是属于单个hook的配置项,并非repo级参数。
修改后的配置
删除全局的files块,然后在flake8的hook节点内添加files配置:
repos: - repo: https://github.com/pycqa/isort rev: 5.9.3 hooks: - id: isort name: isort (python) args: [--profile=black] - id: isort name: isort (cython) types: [cython] args: [--profile=black] - id: isort name: isort (pyi) types: [pyi] args: [--profile=black] - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black - repo: https://github.com/pycqa/flake8 rev: 4.0.1 hooks: - id: flake8 files: | (?x)^( mymodule/tests/.*py| mymodule/cleanfile1.py| mymodule/cleanfile2.py )$ args: - --max-line-length=88 - --ignore=E203,E501,E731,E741,W503,SIM106,SIM119,FS002,FS003 additional_dependencies: - flake8-comprehensions - flake8-mutable - flake8-simplify - flake8-use-fstring
配置逻辑
- 移除全局
files后,isort和black会默认处理所有匹配自身类型的文件(比如isort处理.py/.pyx/.pyi,black处理.py)。 - 在
flake8的hook内添加files正则,限制它仅检查你指定的已清理文件。
内容的提问来源于stack exchange,提问作者PiRK
相关产品推荐
相关产品推荐

