Tip
前置知识:
- 基本的命令行操作
- Git 基础知识
Pre-commit 是一个用来在提交之前进行格式审查的工具。在本地完成开发/编写后,通常需要检查样式/格式化/测试等,pre-commit 就是一个自动执行上述步骤,提高效率的工具。本文介绍如何配置和使用 Pre-commit 工具来自动化代码审查流程。
安装
pip install pre-commit
pre-commit -V # 查看版本信息
Note
输出版本信息即为安装成功
配置
在项目目录下新增一个文件 .pre-commit-config.yaml
,其中填入配置信息,例如:
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: check-xml
- id: check-added-large-files
- id: check-byte-order-marker
- repo: https://github.com/PyCQA/flake8
rev: '3.7.9'
hooks:
- id: flake8
- repo: https://github.com/codespell-project/codespell
rev: v1.16.0
hooks:
- id: codespell
Tip
上述配置内容仅为示例,实际根据自身需求填入内容
然后执行以下命令:
pre-commit install
Note
没有报错就是安装成功了
第一次使用时可以先使用 pre-commit run --all-files
对所有文件进行一次审查,后续在 commit
时会自动进行检查。
此外,在 .pre-commit-config.yaml
配置文件中,必须为每个存储库指定版本。Pre-commit 提供了自动更新命令:
pre-commit autoupdate
常用 hook 介绍
Tip
Hook 可以分为通用类和语言特定类两种:
- 通用类来自 pre-commit/pre-commit-hooks
- 语言特定类如 flake8 只对特定语言起作用
以下是一些常用的 hook:
-
通用类:
check-added-large-files
: 提交前阻止增加大文件(默认 500kb)check-xml
: 加载 xml 文件并检查语法check-case-conflict
: 检查是否因大小写造成文件冲突check-merge-confilct
: 查找并报告 git 合并冲突mixed-line-ending
: 检查并修复文件的行尾结束符detect-private-key
: 检查是否有私钥被提交
-
Python 相关:
flake8
: 对 python 代码进行风格检查和错误检查mypy
: python 的静态类型检查器docstring
: python 中的文档字符串检查