使用版本控制挂钩

使用 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 可以为两者安装预提交挂钩 GitMercurial . 要安装内置钩子,可以使用 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.lazytrue (类似于你的设置 flake8.strict 这将检查所有跟踪的文件。

这是为了支持经常发现自己在做以下事情的用户:

git commit -a

注解

如果您有尚未添加到索引的文件, Flake8 不会看到这些,也不会为您检查。你必须 git-add 他们先来。