一些用于预提交的开箱即用的挂钩。
另请参阅:https://github.com/pre-commit/pre-commit
将其添加到您的.pre-commit-config.yaml
- repo: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # 使用你想要指向hooks的ref: - id: 尾随空白# - id: ...
check-added-large-files
防止提交巨型文件。
使用args: ['--maxkb=123']
(默认=500kB)。
将检查的文件限制为那些指示为暂存以供 git 添加的文件。
如果安装了git-lfs
,lfs 文件将被跳过(需要git-lfs>=2.2.1
)
--enforce-all
- 检查所有列出的文件,而不仅仅是那些准备添加的文件。
check-ast
只需检查文件是否解析为有效的 python 即可。
check-builtin-literals
初始化空或零 Python 内置类型时需要文字语法。
允许使用位置参数调用构造函数(例如list('abc')
)。
允许从builtins
( __builtin__
) 命名空间 ( builtins.list()
) 调用构造函数。
使用--ignore=type1,type2,…
忽略特定内置类型的此要求。
使用--no-allow-dict-kwargs
禁止dict
关键字语法。
check-case-conflict
检查名称是否会在不区分大小写的文件系统(如 MacOS HFS+ 或 Windows FAT)上发生冲突。
check-docstring-first
检查将代码放在文档字符串之前的常见错误。
check-executables-have-shebangs
检查非二进制可执行文件是否具有正确的 shebang。
check-illegal-windows-names
检查无法在 Windows 上创建的文件。
check-json
尝试加载所有 json 文件以验证语法。
check-merge-conflict
检查包含合并冲突字符串的文件。
--assume-in-merge
- 允许在没有正在进行的合并操作时运行挂钩
check-shebang-scripts-are-executable
检查带有 shebangs 的脚本是否可执行。
check-symlinks
检查不指向任何内容的符号链接。
check-toml
尝试加载所有 TOML 文件以验证语法。
check-vcs-permalinks
确保 vcs 网站的链接是永久链接。
--additional-github-domain DOMAIN
- 添加对指定域的检查。可以重复多次。 例如,如果您的公司使用 GitHub Enterprise,您可以使用类似--additional-github-domain github.example.com
内容
check-xml
尝试加载所有 xml 文件以验证语法。
check-yaml
尝试加载所有 yaml 文件以验证语法。
--allow-multiple-documents
- 允许使用多文档语法的 yaml 文件
--unsafe
- 不加载文件,而是简单地解析它们的语法。仅语法检查允许扩展和不安全的构造,否则这些检查将被禁止。 使用此选项将消除对其他 yaml 实现的可移植性的所有保证。意味着--allow-multiple-documents
。
debug-statements
检查 python 源代码中的调试器导入和 py37+ breakpoint()
调用。
destroyed-symlinks
检测更改为常规文件的符号链接,其中包含该符号链接指向的路径的内容。在 Windows 上,当用户克隆具有符号链接的存储库但他们没有创建符号链接的权限时,通常会发生这种情况。
detect-aws-credentials
检查您使用 AWS CLI 设置的 AWS 密钥是否存在。可以使用以下参数:
--credentials-file CREDENTIALS_FILE
- 非标准位置中的附加 AWS CLI 样式配置文件,用于从中获取配置的凭证。可以重复多次。
--allow-missing-credentials
- 未检测到凭据时允许钩子通过。
detect-private-key
检查私钥是否存在。
double-quote-string-fixer
该钩子用单引号字符串替换双引号字符串。
end-of-file-fixer
确保文件以换行符结尾并且仅以换行符结尾。
file-contents-sorter
对指定文件中的行进行排序(默认按字母顺序)。您必须提供目标files
作为输入。请注意,此挂钩将删除空行并且不尊重任何注释。所有换行符都将转换为换行符 ( n
)。
可以使用以下参数:
--ignore-case
- 将小写字母折叠为大写字母。
--unique
- 确保每一行都是唯一的。
fix-byte-order-marker
删除 UTF-8 字节顺序标记
fix-encoding-pragma
由于 py2 已停产,因此已弃用 - 请改用 pyupgrade。
将# -*- coding: utf-8 -*-
添加到 python 文件的顶部。
要删除编码杂注,请传递--remove
(在仅限 python3 的代码库中有用)
forbid-new-submodules
防止添加新的 git 子模块。
其目的是作为从子模块迁移的帮助程序。 如果你想完全禁止它们,请使用forbid-submodules
forbid-submodules
禁止存储库中的任何子模块。
mixed-line-ending
替换或检查混合行结尾。
--fix={auto,crlf,lf,no}
此选项与 git setup check-in LF check-out CRLF 不兼容,因为 git 会在调用钩子之后涂抹此选项。
auto
- 自动替换最常见的行结尾。这是默认参数。
crlf
、 lf
- 强制分别替换以 CRLF 和 LF 结尾的行。
no
- 检查是否存在任何混合行结尾而不修改任何文件。
name-tests-test
验证测试文件的命名是否正确。
--pytest
(默认值):确保测试匹配.*_test.py
--pytest-test-first
:确保测试匹配test_.*.py
--django
/ --unittest
:确保测试匹配test.*.py
no-commit-to-branch
保护特定分支免遭直接签入。
使用args: [--branch, staging, --branch, main]
设置分支。如果未设置分支参数,则默认情况下main
和master
都受到保护。
-b
/ --branch
可以指定多次以保护多个分支。
-p
/ --pattern
可用于保护与所提供的正则表达式匹配的分支(例如--pattern, release/.*
)。可以指定多次。
请注意, no-commit-to-branch
默认配置为always_run
。因此,它将忽略files
、 exclude
、 types
或exclude_types
的任何设置。设置always_run: false
以允许根据这些文件过滤器跳过此挂钩。注意:在此配置中,此挂钩始终允许空提交( git commit --allow-empty
)。
pretty-format-json
检查所有 JSON 文件是否正确。 这里的“漂亮”意味着键已排序并缩进。 您可以使用以下命令行选项进行配置:
--autofix
- 自动格式化 json 文件
--indent ...
- 控制缩进(可以是多个空格的数字,也可以是一串空格)。 默认为 2 个空格。
--no-ensure-ascii
保留 unicode 字符而不是转换为转义序列
--no-sort-keys
- 自动修复时,保留原始键顺序(而不是对键进行排序)
--top-keys comma,separated,keys
- 保留在映射顶部的键。
requirements-txt-fixer
对requirements.txt和constraints.txt中的条目进行排序,并删除pkg-resources==0.0.0
的不正确条目
sort-simple-yaml
对仅包含顶级键的简单 YAML 文件进行排序,保留注释和块。
请注意, sort-simple-yaml
默认情况下不匹配任何files
因为它强制执行非常特定的格式。 您必须通过设置files
来选择此选项,例如:
- id: sort-simple-yamlfiles: ^config/simple/
trailing-whitespace
修剪尾随空白。
要保留 Markdown 硬换行符,请使用args: [--markdown-linebreak-ext=md]
(或 markdown 文件使用的其他扩展名)。 如果出于某种原因您想将所有文件视为 markdown,请使用--markdown-linebreak-ext=*
。
默认情况下,此钩子会修剪行尾的所有空白。要指定要修剪的自定义字符集,请使用args: [--chars,"<chars to trim>"]
。
check-byte-order-marker
:改为使用修复字节顺序标记
如果您想使用这些挂钩,它们也可以作为独立包提供。
只需pip install pre-commit-hooks