为pre-commit提供的某些现成钩子。
项目描述
pre-commit-hooks
为pre-commit提供的某些现成钩子。
另请参阅: https://github.com/pre-commit/pre-commit
使用pre-commit-hooks与pre-commit配合使用
将其添加到您的 .pre-commit-config.yaml
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0 # Use the ref you want to point at
hooks:
- id: trailing-whitespace
# - 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-json
尝试加载所有json文件以验证语法。
check-merge-conflict
检查包含合并冲突字符串的文件。
--assume-in-merge
- 允许在没有进行合并操作时运行钩子
check-shebang-scripts-are-executable
检查带有 shebang 的脚本是否可执行。
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}
auto
- 自动替换最频繁的行结束。这是默认参数。crlf
,lf
- 强制分别替换为 CRLF 和 LF。- 此选项与 git 设置检查不兼容,因为 LF 检查-out CRLF 在钩子调用之后由 git smudge。
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-yaml
files: ^config/simple/
trailing-whitespace
删除尾随空格。
- 要保留Markdown 硬换行符,请使用
args: [--markdown-linebreak-ext=md]
(或您的Markdown文件使用的其他扩展)(或使用--markdown-linebreak-ext=*
将所有文件视为Markdown)。 - 默认情况下,此钩子删除行尾的所有空白。要指定要删除的自定义字符集,请使用
args: [--chars,"<chars to trim>"]
。
已弃用/已替换钩子
check-byte-order-marker
:改用fix-byte-order-marker
作为独立包
如果您想使用这些钩子,它们也作为独立包提供。
只需pip install pre-commit-hooks
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。