用 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 项目编码规范》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

数据结构 Python语言描述

数据结构 Python语言描述

[美] Kenneth A. Lambert 兰伯特 / 李军 / 人民邮电出版社 / 2017-12-1 / CNY 69.00

在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大。Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。 《数据结构 Python语言描述》第1章简单介绍了Python语言的基础知识和特性。第2章到第4章对抽象数据类型、数据结构、复杂度分析、数组和线性链表结构进行了详细介绍,第5章和第6章重点介绍了面向对象设计的相关知识、......一起来看看 《数据结构 Python语言描述》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具