一些用於預先提交的開箱即用的掛鉤。
另請參閱: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