用 pre-commit hook 解决 Python 项目编码规范

栏目: Python · 发布时间: 5年前

内容简介:本文参考了:代码规范、测试是开发中很重要的一环,重要性无需我多说。我们需要一些自动化工具,来帮助我们更轻松地管理项目。本文推荐几个实用的自动化工具。pre-commit 我在之前的一篇文章

本文参考了:

代码规范、测试是开发中很重要的一环,重要性无需我多说。我们需要一些自动化工具,来帮助我们更轻松地管理项目。本文推荐几个实用的自动化工具。

pre-commit 我在之前的一篇文章 推荐一些维护大型 Python 项目的工具 中简要提到过,这里再稍微讲一下。

pre-commit 用到一个配置文件: .pre-commit-config.yaml ,官方文档在这里。这里针对 Python 项目,希望 git precommit hooks 能够实现以下功能:能找出不符合 pep8规范的代码,并且能够自动格式化。这需要用到两个工具: blackflake8black 自动格式化, flake8 检测代码不规范的地方。

整个的 workflow 如下图所示:

用 pre-commit hook 解决 Python 项目编码规范

具体的执行步骤如下:

  1. 安装 pre-commit : pip install pre-commit
  2. .pre-commit-config.yaml 配置文件
  3. pre-commit install 安装git hooks到你的 .git/ 目录

我们的 .pre-commit-config.yaml 很简单,如下:

repos:
- repo: https://github.com/ambv/black
  rev: stable
  hooks:
    - id: black
      language_version: python3.7
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v1.2.3
  hooks:
    - id: flake8
复制代码

然后我们下一次提交 commit 的时候,会先运行 blackflake8 ,检查出哪有不规范的地方,并且能自动帮你格式化。你修改之后重新提交 commit,就能顺利提交了。

实际操作一下:

新建一个测试文件: bad_pep8.py

用 pre-commit hook 解决 Python 项目编码规范

有好几处不符合 pep8规范,我们试着 commit 一下:

用 pre-commit hook 解决 Python 项目编码规范

可以看到两个 hook 都没有通过,另外 black 帮我们把代码格式化了。

用 pre-commit hook 解决 Python 项目编码规范

同时 flake8 提示我们 x 变量定义了但是没有使用,把这一行删掉,然后重新add 并 commit:

用 pre-commit hook 解决 Python 项目编码规范

如果你觉得没有必要强制要求不能定义变量而不使用(从输出可以看出这个规范的编号为F841),可以在项目根目录建一个 .flake8 配置文件,如下图。更加详细的配置请看官方文档。

[flake8]
ignore = F841
复制代码

以上所述就是小编给大家介绍的《用 pre-commit hook 解决 Python 项目编码规范》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical JavaScript, DOM Scripting and Ajax Projects

Practical JavaScript, DOM Scripting and Ajax Projects

Frank Zammetti / Apress / April 16, 2007 / $44.99

http://www.amazon.com/exec/obidos/tg/detail/-/1590598164/ Book Description Practical JavaScript, DOM, and Ajax Projects is ideal for web developers already experienced in JavaScript who want to ......一起来看看 《Practical JavaScript, DOM Scripting and Ajax Projects》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具