Beberapa hook out-of-the-box untuk pra-komitmen.
Lihat juga: https://github.com/pre-commit/pre-commit
Tambahkan ini ke .pre-commit-config.yaml
Anda
- repo: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # Gunakan referensi yang ingin Anda tunjuk: - id: spasi tambahan# - id: ...
check-added-large-files
Mencegah file raksasa dikomit.
Tentukan apa yang "terlalu besar" dengan args: ['--maxkb=123']
(default=500kB).
Membatasi file yang diperiksa ke file yang diindikasikan sebagai bertahap untuk ditambahkan oleh git.
Jika git-lfs
diinstal, file lfs akan dilewati (membutuhkan git-lfs>=2.2.1
)
--enforce-all
- Periksa semua file yang terdaftar, bukan hanya yang dipentaskan untuk penambahan.
check-ast
Cukup periksa apakah file diurai sebagai python yang valid.
check-builtin-literals
Memerlukan sintaks literal saat menginisialisasi tipe bawaan Python yang kosong atau nol.
Mengizinkan pemanggilan konstruktor dengan argumen posisi (misalnya, list('abc')
).
Mengizinkan pemanggilan konstruktor dari namespace builtins
( __builtin__
) ( builtins.list()
).
Abaikan persyaratan ini untuk tipe bawaan tertentu dengan --ignore=type1,type2,…
.
Larang sintaks kata kunci dict
dengan --no-allow-dict-kwargs
.
check-case-conflict
Periksa file dengan nama yang akan bertentangan pada sistem file yang tidak peka huruf besar-kecil seperti MacOS HFS+ atau Windows FAT.
check-docstring-first
Memeriksa kesalahan umum dalam menempatkan kode sebelum docstring.
check-executables-have-shebangs
Memeriksa apakah executable non-biner memiliki shebang yang tepat.
check-illegal-windows-names
Periksa file yang tidak dapat dibuat di Windows.
check-json
Mencoba memuat semua file json untuk memverifikasi sintaksis.
check-merge-conflict
Periksa file yang berisi string konflik gabungan.
--assume-in-merge
- Memungkinkan menjalankan hook ketika tidak ada operasi penggabungan yang sedang berlangsung
check-shebang-scripts-are-executable
Memeriksa apakah skrip dengan shebangs dapat dieksekusi.
check-symlinks
Memeriksa symlink yang tidak menunjuk ke apa pun.
check-toml
Mencoba memuat semua file TOML untuk memverifikasi sintaksis.
check-vcs-permalinks
Memastikan bahwa tautan ke situs web vcs adalah tautan permanen.
--additional-github-domain DOMAIN
- Tambahkan tanda centang untuk domain tertentu. Dapat diulang berkali-kali. misalnya, jika perusahaan Anda menggunakan GitHub Enterprise, Anda dapat menggunakan sesuatu seperti --additional-github-domain github.example.com
check-xml
Mencoba memuat semua file xml untuk memverifikasi sintaksis.
check-yaml
Mencoba memuat semua file yaml untuk memverifikasi sintaksis.
--allow-multiple-documents
- mengizinkan file yaml yang menggunakan sintaksis multi-dokumen
--unsafe
- Daripada memuat file, cukup parsing file tersebut untuk sintaksisnya. Pemeriksaan sintaksis saja mengaktifkan ekstensi dan konstruksi tidak aman yang seharusnya dilarang. Menggunakan opsi ini menghilangkan semua jaminan portabilitas ke implementasi yaml lainnya. Menyiratkan --allow-multiple-documents
.
debug-statements
Periksa impor debugger dan panggilan py37+ breakpoint()
di sumber python.
destroyed-symlinks
Mendeteksi symlink yang diubah menjadi file biasa dengan konten jalur yang ditunjuk oleh symlink tersebut. Hal ini biasanya terjadi pada Windows ketika pengguna mengkloning repositori yang memiliki symlink tetapi mereka tidak memiliki izin untuk membuat symlink.
detect-aws-credentials
Memeriksa keberadaan rahasia AWS yang telah Anda siapkan dengan AWS CLI. Argumen berikut tersedia:
--credentials-file CREDENTIALS_FILE
- file konfigurasi gaya AWS CLI tambahan di lokasi non-standar untuk mengambil kredensial yang dikonfigurasi. Dapat diulang berkali-kali.
--allow-missing-credentials
- Izinkan kait lewat ketika tidak ada kredensial yang terdeteksi.
detect-private-key
Memeriksa keberadaan kunci pribadi.
double-quote-string-fixer
Kait ini menggantikan string bertanda kutip ganda dengan string bertanda kutip tunggal.
end-of-file-fixer
Memastikan file diakhiri dengan baris baru dan hanya baris baru.
file-contents-sorter
Urutkan baris dalam file tertentu (default berdasarkan abjad). Anda harus memberikan files
target sebagai masukan. Perhatikan bahwa kait ini AKAN menghapus baris kosong dan TIDAK menghormati komentar apa pun. Semua baris baru akan dikonversi menjadi umpan baris ( n
).
Argumen berikut tersedia:
--ignore-case
- lipat karakter huruf kecil ke huruf besar.
--unique
- memastikan setiap baris unik.
fix-byte-order-marker
menghapus penanda urutan byte UTF-8
fix-encoding-pragma
Tidak digunakan lagi karena py2 adalah EOL - gunakan pyupgrade sebagai gantinya.
Tambahkan # -*- coding: utf-8 -*-
ke bagian atas file python.
Untuk menghapus kode pragma pass --remove
(berguna dalam basis kode khusus python3)
forbid-new-submodules
Cegah penambahan submodul git baru.
Ini dimaksudkan sebagai bantuan untuk bermigrasi keluar dari submodul. Jika Anda ingin melarangnya sepenuhnya, gunakan forbid-submodules
forbid-submodules
melarang submodul apa pun di repositori.
mixed-line-ending
Mengganti atau memeriksa akhir baris campuran.
--fix={auto,crlf,lf,no}
Opsi ini tidak kompatibel dengan git setup check-in LF check-out CRLF karena git smudge ini setelah hook dipanggil.
auto
- Mengganti secara otomatis akhir baris yang paling sering. Ini adalah argumen default.
crlf
, lf
- Memaksa untuk mengganti garis yang diakhiri dengan CRLF dan LF masing-masing.
no
- Memeriksa apakah ada akhiran baris campuran tanpa mengubah file apa pun.
name-tests-test
memverifikasi bahwa file pengujian diberi nama dengan benar.
--pytest
(default): memastikan pengujian cocok dengan .*_test.py
--pytest-test-first
: memastikan pengujian cocok dengan test_.*.py
--django
/ --unittest
: memastikan tes cocok dengan test.*.py
no-commit-to-branch
Lindungi cabang tertentu dari checkin langsung.
Gunakan args: [--branch, staging, --branch, main]
untuk mengatur cabang. Baik main
maupun master
dilindungi secara default jika tidak ada argumen cabang yang disetel.
-b
/ --branch
dapat ditentukan beberapa kali untuk melindungi banyak cabang.
-p
/ --pattern
dapat digunakan untuk melindungi cabang yang cocok dengan regex yang disediakan (misalnya --pattern, release/.*
). Dapat ditentukan beberapa kali.
Perhatikan bahwa no-commit-to-branch
dikonfigurasikan secara default ke always_run
. Akibatnya, ia akan mengabaikan pengaturan files
, exclude
, types
, exclude_types
apa pun. Setel always_run: false
untuk mengizinkan pengait ini dilewati sesuai dengan filter file ini. Peringatan: Dalam konfigurasi ini, komit kosong ( git commit --allow-empty
) akan selalu diizinkan oleh hook ini.
pretty-format-json
Periksa apakah semua file JSON Anda cantik. "Cantik" di sini berarti kunci diurutkan dan diindentasi. Anda dapat mengonfigurasinya dengan opsi baris perintah berikut:
--autofix
- memformat file json secara otomatis
--indent ...
- Mengontrol indentasi (baik angka untuk sejumlah spasi atau string spasi). Defaultnya adalah 2 spasi.
--no-ensure-ascii
mempertahankan karakter unicode alih-alih mengonversi menjadi escape sequence
--no-sort-keys
- saat memperbaiki otomatis, pertahankan urutan kunci asli (alih-alih mengurutkan kunci)
--top-keys comma,separated,keys
- Kunci untuk tetap berada di bagian atas pemetaan.
requirements-txt-fixer
Mengurutkan entri dalam persyaratan.txt dan batasan.txt dan menghapus entri yang salah untuk pkg-resources==0.0.0
sort-simple-yaml
Mengurutkan file YAML sederhana yang hanya terdiri dari kunci tingkat atas, mempertahankan komentar dan blok.
Perhatikan bahwa sort-simple-yaml
secara default tidak cocok dengan files
apa pun karena menerapkan format yang sangat spesifik. Anda harus ikut serta dalam hal ini dengan mengatur files
, misalnya:
- id: sortir-sederhana-yamlfiles: ^config/simple/
trailing-whitespace
Memangkas spasi di belakang.
Untuk mempertahankan hard linebreak Markdown, gunakan args: [--markdown-linebreak-ext=md]
(atau ekstensi lain yang digunakan oleh markdownfiles Anda). Jika karena alasan tertentu Anda ingin memperlakukan semua file sebagai penurunan harga, gunakan --markdown-linebreak-ext=*
.
Secara default, pengait ini memotong semua spasi dari ujung garis. Untuk menentukan kumpulan karakter khusus yang akan dipangkas, gunakan args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: sebagai gantinya gunakan fix-byte-order-marker
Jika Anda ingin menggunakan pengait ini, pengait ini juga tersedia sebagai paket mandiri.
Cukup pip install pre-commit-hooks