背景信息
统一代码风格首先需要定义参照的规范,每个团队可能会有自己的规范,我们选择的规范是 yapf + mypy + isort,如果保证所有的研发人员都遵循相关规范呢?
- 鼓励 IDE 中对应的插件的安装,通过直接对应的插件,在编写代码阶段就能实时发现不符合规范的情况,修改成本最低;
- 通过 Pre-commit 在创建 commit 时执行检查,并进行必要的自动格式化,提供统一的规范约束,成本次之;
- 在发起 Pull-Request 时拉取代码执行检查,并异步返回检查结果,成本稍高一些,但是功能也更完备一些,不仅能可以进行静态检查,也可以进行必要的自动化测试;
而本次主要介绍的就是基于 Pre-commit 进行必要的代码检查与格式化,期间遇到一些问题,整理出来帮助后人少踩坑吧。
Pre-commit 简单介绍
Pre commit 是 git 提供的预提交机制,可以在创建 commit 之前执行预定义的钩子程序,从而方便执行必要的代码检查。
而在实践中可能会需要执行大量的钩子程序,如果来管理这些钩子程序呢,Pre-commit 就是其中一个应用较多的框架,通过这个框架可以比较方便地管理大量的预提交钩子程序,这样简化了维护成本。如何来使用 Pre-commit 框架呢?
- 安装 Pre-commit 框架,一般情况下 pip 安装下即可;
- 在工程中添加
.pre-commit-config.yaml
文件,需要安装的钩子程序都是维护在这个配置文件中的; - 通过
pre-commit install
安装对应的钩子程序;
后续在创建 commit 时就会依次执行安装好的钩子程序,如果不符合钩子程序对应的规范,就会检查失败,commit 无法创建,类似如下所示:
Pre-commit 的使用主要关注的是配置文件 .pre