我使用flake8和一堆插件(flake8-docstrings,flake8-isort,flake8-black)。我把它们都预装到venv里了.
我要用pre-commit检查我的回购
isort)
setup.cfg
black和pydocstyle)
(配置flake8和pydocstyle)))
├── foo
│ ├── pyproject.toml
│ ├── setup.cfg
│ └── (the package)
├── bar
│ ├── pyproject.toml
│ ├── setup.cfg
│ └── (the package)
└── venv我想通过pre-commit为这两个包调用pre-commit。
我现在是这样做的:
---
repos:
- repo: local
hooks:
- id: flake8-foo
name: Run flake8 in foo package
entry: bash -c "cd foo && flake8"
language: python
- id: flake8-bar
name: Run flake8 in bar package
entry: bash -c "cd bar && flake8"
language: python当我运行pre-commit run --all-files并在foo中出现错误时,它多次输出相同的输出:
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative mood
./path/in/foo/to/file.py:49:1: D401 First line should be in imperative moodrepos
发布于 2021-03-05 01:54:21
pre-commit按设计对文件进行操作,它还被优化为将针对文件的指针批量运行到多个进程中。
这里发生的情况是,您的配置正在运行几次调用(每个处理器1次)、bash -c "cd bar && flake8" file1 file2 file3等。
幸运的是,有一个设置可以用来为您修复这个问题:
在此基础上:
---
repos:
- repo: local
hooks:
- id: flake8-foo
name: Run flake8 in foo package
entry: bash -c "cd foo && flake8"
language: python
pass_filenames: false
files: ^foo/
types: [python]
- id: flake8-bar
name: Run flake8 in bar package
entry: bash -c "cd bar && flake8"
language: python
pass_filenames: false
files: ^bar/
types: [python]也就是说,通过使用repo: local钩子,您将失去框架的大部分好处:
twice
对于您的monorepo设置,我建议的是仍然以正常的方式调用flake8,但是要利用--config,这样它就会对您的子回购产生不利影响:
repos:
- repo: https://gitlab.com/pycqa/flake8
rev: 3.8.4
hooks:
- id: flake8
name: flake8 ./foo/
alias: flake8-foo
files: ^foo/
args: [--config, foo/setup.cfg]
- id: flake8
name: flake8 ./bar/
alias: flake8-bar
files: ^bar/
args: [--config, bar/setup.cfg]免责声明:我是“预提交”的作者,也是flake8目前的维护者
https://stackoverflow.com/questions/66482664
复制相似问题