事前コミット用のすぐに使用できるフック。
参照: https://github.com/pre-commit/pre-commit
これを.pre-commit-config.yaml
に追加します。
- リポジトリ: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # 参照したい参照を使用します。 - 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
docstring の前にコードを配置するという一般的なエラーをチェックします。
check-executables-have-shebangs
非バイナリ実行可能ファイルに適切なシバンがあることをチェックします。
check-illegal-windows-names
Windowsで作成できないファイルがないか確認してください。
check-json
構文を確認するためにすべての json ファイルをロードしようとします。
check-merge-conflict
マージ競合文字列を含むファイルを確認します。
--assume-in-merge
- 進行中のマージ操作がないときにフックを実行できるようにします。
check-shebang-scripts-are-executable
シバンを含むスクリプトが実行可能であることを確認します。
check-symlinks
何も指していないシンボリックリンクをチェックします。
check-toml
すべての TOML ファイルをロードして構文を確認します。
check-vcs-permalinks
VCS Web サイトへのリンクがパーマリンクであることを確認します。
--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 は EOL なので非推奨です - 代わりに pyupgrade を使用してください。
# -*- coding: utf-8 -*-
Python ファイルの先頭に追加します。
コーディングプラグマを削除するには--remove
を渡します (Python3 のみのコードベースで役立ちます)
forbid-new-submodules
新しい git サブモジュールの追加を防止します。
これは、サブモジュールから移行するためのヘルパーとして意図されています。 完全に禁止したい場合は、 forbid-submodules
を使用してください。
forbid-submodules
リポジトリ内のサブモジュールを禁止します。
mixed-line-ending
混合行末を置換またはチェックします。
--fix={auto,crlf,lf,no}
git はフックが呼び出されるよりも後でこれを汚すため、このオプションは git setup check-in LF check-out CRLF とは互換性がありません。
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-linebreak-ext=*
を使用します。
デフォルトでは、このフックは行末からすべての空白をトリミングします。代わりにトリミングする文字のカスタム セットを指定するには、 args: [--chars,"<chars to trim>"]
を使用します。
check-byte-order-marker
: 代わりに fix-byte-order-marker を使用してください
これらのフックを使用したい場合は、スタンドアロン パッケージとしても入手できます。
pip install pre-commit-hooks
だけです