Einige sofort einsatzbereite Hooks für das Pre-Commit.
Siehe auch: https://github.com/pre-commit/pre-commit
Fügen Sie dies Ihrer .pre-commit-config.yaml
hinzu
- Repo: https://github.com/pre-commit/pre-commit-hooksrev: v5.0.0 # Verwenden Sie die Referenz, auf die Sie verweisen möchtenhooks: - id: Trailing-Whitespace# - id: ...
check-added-large-files
Verhindern Sie, dass riesige Dateien übertragen werden.
Geben Sie mit args: ['--maxkb=123']
(Standard = 500 KB).
Beschränkt überprüfte Dateien auf diejenigen, die von Git als zum Hinzufügen bereitgestellt angegeben wurden.
Wenn git-lfs
installiert ist, werden lfs-Dateien übersprungen (erfordert git-lfs>=2.2.1
)
--enforce-all
– Überprüfen Sie alle aufgelisteten Dateien, nicht nur die zum Hinzufügen bereitgestellten.
check-ast
Überprüfen Sie einfach, ob Dateien als gültiges Python analysiert werden.
check-builtin-literals
Erfordert Literalsyntax beim Initialisieren leerer oder null integrierter Python-Typen.
Ermöglicht den Aufruf von Konstruktoren mit Positionsargumenten (z. B. list('abc')
).
Ermöglicht das Aufrufen von Konstruktoren aus dem Namensraum builtins
“ ( __builtin__
) ( builtins.list()
).
Ignorieren Sie diese Anforderung für bestimmte integrierte Typen mit --ignore=type1,type2,…
.
Verbieten Sie die Syntax des dict
mit --no-allow-dict-kwargs
.
check-case-conflict
Suchen Sie nach Dateien mit Namen, die auf einem Dateisystem ohne Berücksichtigung der Groß-/Kleinschreibung wie MacOS HFS+ oder Windows FAT zu Konflikten führen würden.
check-docstring-first
Überprüft, ob ein häufiger Fehler beim Platzieren von Code vor der Dokumentzeichenfolge auftritt.
check-executables-have-shebangs
Überprüft, ob nicht-binäre ausführbare Dateien ordnungsgemäß funktionieren.
check-illegal-windows-names
Suchen Sie nach Dateien, die unter Windows nicht erstellt werden können.
check-json
Versucht, alle JSON-Dateien zu laden, um die Syntax zu überprüfen.
check-merge-conflict
Suchen Sie nach Dateien, die Zusammenführungskonfliktzeichenfolgen enthalten.
--assume-in-merge
– Ermöglicht die Ausführung des Hooks, wenn keine laufende Zusammenführungsoperation stattfindet
check-shebang-scripts-are-executable
Überprüft, ob Skripte mit Shebangs ausführbar sind.
check-symlinks
Prüft auf symbolische Links, die auf nichts verweisen.
check-toml
Versucht, alle TOML-Dateien zu laden, um die Syntax zu überprüfen.
check-vcs-permalinks
Stellt sicher, dass Links zu VCS-Websites Permalinks sind.
--additional-github-domain DOMAIN
– Prüfung für die angegebene Domäne hinzufügen. Kann mehrfach wiederholt werden. Wenn Ihr Unternehmen beispielsweise GitHub Enterprise verwendet, können Sie etwas wie --additional-github-domain github.example.com
verwenden
check-xml
Versucht, alle XML-Dateien zu laden, um die Syntax zu überprüfen.
check-yaml
Versucht, alle Yaml-Dateien zu laden, um die Syntax zu überprüfen.
--allow-multiple-documents
– Yaml-Dateien zulassen, die die Multi-Dokument-Syntax verwenden
--unsafe
– Anstatt die Dateien zu laden, analysieren Sie sie einfach auf Syntax. Eine reine Syntaxprüfung ermöglicht Erweiterungen und unsichere Konstrukte, die andernfalls verboten wären. Durch die Verwendung dieser Option werden alle Garantien der Portabilität auf andere Yaml-Implementierungen aufgehoben. Impliziert --allow-multiple-documents
.
debug-statements
Suchen Sie nach Debugger-Importen und py37+ breakpoint()
Aufrufen in der Python-Quelle.
destroyed-symlinks
Erkennt Symlinks, die in reguläre Dateien mit einem Inhalt eines Pfads geändert werden, auf den dieser Symlink verwies. Dies geschieht normalerweise unter Windows, wenn ein Benutzer ein Repository klont, das über Symlinks verfügt, er jedoch nicht über die Berechtigung zum Erstellen von Symlinks verfügt.
detect-aws-credentials
Überprüft das Vorhandensein von AWS-Geheimnissen, die Sie mit der AWS CLI eingerichtet haben. Folgende Argumente stehen zur Verfügung:
--credentials-file CREDENTIALS_FILE
– zusätzliche Konfigurationsdatei im AWS CLI-Stil an einem nicht standardmäßigen Speicherort zum Abrufen konfigurierter Anmeldeinformationen. Kann mehrfach wiederholt werden.
--allow-missing-credentials
– Erlaubt die Weitergabe des Hooks, wenn keine Anmeldeinformationen erkannt werden.
detect-private-key
Prüft, ob private Schlüssel vorhanden sind.
double-quote-string-fixer
Dieser Hook ersetzt Zeichenfolgen in doppelten Anführungszeichen durch Zeichenfolgen in einfachen Anführungszeichen.
end-of-file-fixer
Stellt sicher, dass Dateien mit einer neuen Zeile und nur mit einer neuen Zeile enden.
file-contents-sorter
Sortieren Sie die Zeilen in den angegebenen Dateien (standardmäßig alphabetisch). Sie müssen die files
als Eingabe bereitstellen. Beachten Sie, dass dieser Hook Leerzeilen entfernt und Kommentare NICHT berücksichtigt. Alle Zeilenumbrüche werden in Zeilenumbrüche ( n
) umgewandelt.
Folgende Argumente stehen zur Verfügung:
--ignore-case
– Kleinbuchstaben in Großbuchstaben umwandeln.
--unique
– Stellen Sie sicher, dass jede Zeile einzigartig ist.
fix-byte-order-marker
Entfernt die UTF-8-Bytereihenfolgemarkierung
fix-encoding-pragma
Veraltet, da py2 EOL ist – verwenden Sie stattdessen pyupgrade.
Fügen Sie # -*- coding: utf-8 -*-
am Anfang der Python-Dateien hinzu.
Um das Codierungs-Pragma zu entfernen, geben Sie --remove
ein (nützlich in einer reinen Python3-Codebasis)
forbid-new-submodules
Verhindern Sie das Hinzufügen neuer Git-Submodule.
Dies ist als Hilfe bei der Migration weg von Submodulen gedacht. Wenn Sie sie vollständig verbieten möchten, verwenden Sie forbid-submodules
forbid-submodules
verbietet jegliche Submodule im Repository.
mixed-line-ending
Ersetzt oder überprüft gemischte Zeilenenden.
--fix={auto,crlf,lf,no}
Diese Option ist nicht mit git setup check-in LF check-out CRLF kompatibel, da git dies später verwischt, als der Hook aufgerufen wird.
auto
– Ersetzt automatisch das häufigste Zeilenende. Dies ist das Standardargument.
crlf
, lf
– Erzwingt das Ersetzen des Zeilenendes durch CRLF bzw. LF.
no
– Prüft, ob gemischte Zeilenenden vorhanden sind, ohne dass eine Datei geändert wird.
name-tests-test
Überprüft, ob die Testdateien korrekt benannt sind.
--pytest
(Standard): Stellen Sie sicher, dass die Tests mit .*_test.py
übereinstimmen
--pytest-test-first
: Stellen Sie sicher, dass die Tests mit test_.*.py
übereinstimmen
--django
/ --unittest
: Stellen Sie sicher, dass die Tests mit test.*.py
übereinstimmen
no-commit-to-branch
Schützen Sie bestimmte Filialen vor direkten Check-ins.
Verwenden Sie args: [--branch, staging, --branch, main]
um den Zweig festzulegen. Sowohl main
als auch master
sind standardmäßig geschützt, wenn kein Branch-Argument festgelegt ist.
-b
/ --branch
kann mehrfach angegeben werden, um mehrere Zweige zu schützen.
-p
/ --pattern
kann verwendet werden, um Zweige zu schützen, die einem bereitgestellten regulären Ausdruck entsprechen (z. B. --pattern, release/.*
). Kann mehrfach angegeben werden.
Beachten Sie, dass no-commit-to-branch
standardmäßig auf always_run
konfiguriert ist. Infolgedessen werden alle Einstellungen von files
, exclude
, types
oder exclude_types
ignoriert. Legen Sie always_run: false
fest, damit dieser Hook gemäß diesen Dateifiltern übersprungen werden kann. Vorsichtsmaßnahme: In dieser Konfiguration wären leere Commits ( git commit --allow-empty
) durch diesen Hook immer zulässig.
pretty-format-json
Überprüft, ob alle Ihre JSON-Dateien hübsch sind. „Hübsch“ bedeutet hier, dass die Schlüssel sortiert und eingerückt sind. Sie können dies mit den folgenden Befehlszeilenoptionen konfigurieren:
--autofix
– JSON-Dateien automatisch formatieren
--indent ...
– Steuern Sie die Einrückung (entweder eine Zahl für eine Reihe von Leerzeichen oder eine Zeichenfolge aus Leerzeichen). Standardmäßig sind es 2 Leerzeichen.
--no-ensure-ascii
behält Unicode-Zeichen bei, anstatt sie in Escape-Sequenzen zu konvertieren
--no-sort-keys
– Behalten Sie beim automatischen Fixieren die ursprüngliche Schlüsselreihenfolge bei (anstatt die Schlüssel zu sortieren).
--top-keys comma,separated,keys
– Schlüssel, die bei Zuordnungen oben bleiben sollen.
requirements-txt-fixer
Sortiert Einträge in „requirements.txt“ und „constraints.txt“ und entfernt falsche Einträge für pkg-resources==0.0.0
sort-simple-yaml
Sortiert einfache YAML-Dateien, die nur aus Schlüsseln der obersten Ebene bestehen, wobei Kommentare und Blöcke erhalten bleiben.
Beachten Sie, dass sort-simple-yaml
standardmäßig keine files
abgleicht, da es ein ganz bestimmtes Format erzwingt. Sie müssen dem zustimmen, indem Sie beispielsweise files
festlegen:
- id: sort-simple-yamlfiles: ^config/simple/
trailing-whitespace
Schneidet nachgestellte Leerzeichen ab.
Um harte Markdown-Zeilenumbrüche beizubehalten, verwenden Sie args: [--markdown-linebreak-ext=md]
(oder andere von Ihren Markdown-Dateien verwendete Erweiterungen). Wenn Sie aus irgendeinem Grund alle Dateien als Markdown behandeln möchten, verwenden Sie --markdown-linebreak-ext=*
.
Standardmäßig schneidet dieser Hook alle Leerzeichen an den Zeilenenden ab. Um stattdessen einen benutzerdefinierten Satz von zu kürzenden Zeichen anzugeben, verwenden Sie args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: Verwenden Sie stattdessen fix-byte-order-marker
Wenn Sie diese Hooks verwenden möchten, sind sie auch als eigenständiges Paket erhältlich.
pip install pre-commit-hooks