使用版本控制挂钩¶
使用 pre-commit git钩子框架¶
Flake8 可以作为钩子 pre-commit . 最简单的方法是将此配置添加到 .pre-commit-config.yaml
:
- repo: https://gitlab.com/pycqa/flake8
rev: '' # pick a git hash / tag to point to
hooks:
- id: flake8
见 pre-commit docs 了解如何自定义此配置。
签入的python文件将作为位置参数传递。 flake8
will always lint explicitly passed arguments (flake8 --exclude
has no effect). Instead use pre-commit
's exclude: ...
排除文件的正则表达式。 pre-commit
不会将未跟踪的文件传递给 flake8
所以排除 .git
/ .tox
/等等是不必要的。
- id: flake8
exclude: ^testing/(data|examples)/
pre-commit
为钩子创建一个独立的环境。使用 flake8
插件,使用 additional_dependencies
设置。
- id: flake8
additional_dependencies: [flake8-docstrings]
内置挂钩集成¶
注解
强烈建议使用 Flake8 通过 pre-commit 在内置的钩子机构上。 pre-commit
平滑许多粗糙的边缘 git
它比 Flake8 钩子实现。
Flake8 可以以多种方式集成到您的开发工作流中。的默认安装 Flake8 可以为两者安装预提交挂钩 Git 和 Mercurial . 要安装内置钩子,可以使用 flake8 --install-hook
命令行选项。例如,可以通过运行以下命令安装git预提交挂钩:
flake8 --install-hook git
这将把预提交钩子安装到 .git/hooks/
. 或者,您可以通过运行
flake8 --install-hook mercurial
防止提交¶
默认情况下, Flake8 不会阻止您使用这些钩子创建提交。两个钩子都可以很容易地配置为严格。
我们的Git和Mercurial钩子都会检查 flake8.strict
在每个VCS的配置中。例如,您可以这样配置:
git config --bool flake8.strict true
hg config flake8.strict true
正在检查当前跟踪的所有修改的文件¶
注解
据我所知,Mercurial没有索引或“阶段”的概念。
Flake8 旨在做出明智的选择,在可能的情况下为用户保持快速。因此 Flake8 Git pre-commit默认只检查已暂存(即添加到索引中)的文件。但是,如果您热衷于懒惰,并且不独立地将文件添加到git索引中,那么可以设置 flake8.lazy
到 true
(类似于你的设置 flake8.strict
这将检查所有跟踪的文件。
这是为了支持经常发现自己在做以下事情的用户:
git commit -a
注解
如果您有尚未添加到索引的文件, Flake8 不会看到这些,也不会为您检查。你必须 git-add
他们先来。