Quelques hooks prêts à l'emploi pour le pré-commit.
Voir aussi : https://github.com/pre-commit/pre-commit
Ajoutez ceci à votre .pre-commit-config.yaml
- repo : https://github.com/pre-commit/pre-commit-hooksrev : v5.0.0 # Utilisez la référence que vous souhaitez pointer vers des crochets : - identifiant : espace-blanc de fin# - identifiant : ...
check-added-large-files
Empêchez la validation de fichiers géants.
Spécifiez ce qui est « trop grand » avec args: ['--maxkb=123']
(par défaut=500 Ko).
Limite les fichiers vérifiés à ceux indiqués comme étant préparés pour être ajoutés par git.
Si git-lfs
est installé, les fichiers lfs seront ignorés (nécessite git-lfs>=2.2.1
)
--enforce-all
- Vérifiez tous les fichiers répertoriés, pas seulement ceux qui doivent être ajoutés.
check-ast
Vérifiez simplement si les fichiers sont analysés comme un python valide.
check-builtin-literals
Exiger une syntaxe littérale lors de l’initialisation de types intégrés Python vides ou nuls.
Permet d'appeler des constructeurs avec des arguments de position (par exemple, list('abc')
).
Permet d'appeler des constructeurs à partir de l'espace de noms builtins
( __builtin__
) ( builtins.list()
).
Ignorez cette exigence pour les types intégrés spécifiques avec --ignore=type1,type2,…
.
Interdire la syntaxe des mots clés dict
avec --no-allow-dict-kwargs
.
check-case-conflict
Recherchez les fichiers dont les noms pourraient entrer en conflit sur un système de fichiers insensible à la casse comme MacOS HFS+ ou Windows FAT.
check-docstring-first
Vérifie une erreur courante consistant à placer le code avant la docstring.
check-executables-have-shebangs
Vérifie que les exécutables non binaires ont un shebang approprié.
check-illegal-windows-names
Recherchez les fichiers qui ne peuvent pas être créés sous Windows.
check-json
Tente de charger tous les fichiers json pour vérifier la syntaxe.
check-merge-conflict
Recherchez les fichiers contenant des chaînes de conflit de fusion.
--assume-in-merge
- Permet d'exécuter le hook lorsqu'il n'y a pas d'opération de fusion en cours
check-shebang-scripts-are-executable
Vérifie que les scripts avec des shebangs sont exécutables.
check-symlinks
Vérifie les liens symboliques qui ne pointent vers rien.
check-toml
Tente de charger tous les fichiers TOML pour vérifier la syntaxe.
check-vcs-permalinks
Garantit que les liens vers les sites Web VCS sont des liens permanents.
--additional-github-domain DOMAIN
- Ajoute une vérification pour le domaine spécifié. Peut être répété plusieurs fois. par exemple, si votre entreprise utilise GitHub Enterprise, vous pouvez utiliser quelque chose comme --additional-github-domain github.example.com
check-xml
Tente de charger tous les fichiers XML pour vérifier la syntaxe.
check-yaml
Tente de charger tous les fichiers yaml pour vérifier la syntaxe.
--allow-multiple-documents
- autorise les fichiers yaml qui utilisent la syntaxe multi-documents
--unsafe
- Au lieu de charger les fichiers, analysez-les simplement pour la syntaxe. Une vérification syntaxique uniquement autorise les extensions et les constructions non sécurisées qui seraient autrement interdites. L'utilisation de cette option supprime toutes les garanties de portabilité vers d'autres implémentations de yaml. Implique --allow-multiple-documents
.
debug-statements
Vérifiez les importations du débogueur et les appels py37+ breakpoint()
dans la source python.
destroyed-symlinks
Détecte les liens symboliques qui sont remplacés par des fichiers normaux avec le contenu d'un chemin vers lequel ce lien symbolique pointait. Cela se produit généralement sous Windows lorsqu'un utilisateur clone un référentiel contenant des liens symboliques mais n'est pas autorisé à créer des liens symboliques.
detect-aws-credentials
Vérifie l'existence des secrets AWS que vous avez configurés avec l'AWS CLI. Les arguments suivants sont disponibles :
--credentials-file CREDENTIALS_FILE
- fichier de configuration supplémentaire de style AWS CLI dans un emplacement non standard à partir duquel récupérer les informations d'identification configurées. Peut être répété plusieurs fois.
--allow-missing-credentials
- Autoriser le passage du hook lorsqu'aucune information d'identification n'est détectée.
detect-private-key
Vérifie l'existence de clés privées.
double-quote-string-fixer
Ce hook remplace les chaînes entre guillemets doubles par des chaînes entre guillemets simples.
end-of-file-fixer
S'assure que les fichiers se terminent par une nouvelle ligne et uniquement par une nouvelle ligne.
file-contents-sorter
Trier les lignes dans les fichiers spécifiés (par défaut par ordre alphabétique). Vous devez fournir les files
cibles en entrée. Notez que ce hook supprimera les lignes vides et ne respectera AUCUN commentaire. Toutes les nouvelles lignes seront converties en sauts de ligne ( n
).
Les arguments suivants sont disponibles :
--ignore-case
- replie les minuscules en caractères majuscules.
--unique
- assurez-vous que chaque ligne est unique.
fix-byte-order-marker
supprime le marqueur d'ordre d'octet UTF-8
fix-encoding-pragma
Obsolète puisque py2 est EOL - utilisez plutôt pyupgrade.
Ajoutez # -*- coding: utf-8 -*-
en haut des fichiers python.
Pour supprimer le pragma de codage, passez --remove
(utile dans une base de code uniquement python3)
forbid-new-submodules
Empêcher l'ajout de nouveaux sous-modules git.
Ceci est destiné à aider à migrer loin des sous-modules. Si vous souhaitez les interdire complètement, utilisez forbid-submodules
forbid-submodules
interdit tout sous-module dans le référentiel.
mixed-line-ending
Remplace ou vérifie les fins de lignes mixtes.
--fix={auto,crlf,lf,no}
Cette option n'est pas compatible avec git setup check-in LF check-out CRLF car git smudge ceci plus tard que le hook est invoqué.
auto
- Remplace automatiquement la fin de ligne la plus fréquente. C'est l'argument par défaut.
crlf
, lf
- Force le remplacement de la fin de ligne par respectivement CRLF et LF.
no
- Vérifie s'il y a une fin de ligne mixte sans modifier aucun fichier.
name-tests-test
vérifie que les fichiers de test sont nommés correctement.
--pytest
(valeur par défaut) : assurez-vous que les tests correspondent à .*_test.py
--pytest-test-first
: assurez-vous que les tests correspondent test_.*.py
--django
/ --unittest
: assurez-vous que les tests correspondent test.*.py
no-commit-to-branch
Protégez des branches spécifiques des enregistrements directs.
Utilisez args: [--branch, staging, --branch, main]
pour définir la branche. main
et master
sont protégés par défaut si aucun argument de branche n'est défini.
-b
/ --branch
peut être spécifié plusieurs fois pour protéger plusieurs branches.
-p
/ --pattern
peut être utilisé pour protéger les branches qui correspondent à une regex fournie (par exemple --pattern, release/.*
). Peut être spécifié plusieurs fois.
Notez que no-commit-to-branch
est configuré par défaut sur always_run
. En conséquence, il ignorera tout paramètre de files
, exclude
, types
ou exclude_types
. Définissez always_run: false
pour permettre à ce hook d'être ignoré en fonction de ces filtres de fichiers. Attention : dans cette configuration, les commits vides ( git commit --allow-empty
) seraient toujours autorisés par ce hook.
pretty-format-json
Vérifie que tous vos fichiers JSON sont jolis. "Jolie" signifie ici que les clés sont triées et mises en retrait. Vous pouvez configurer cela avec les options de ligne de commande suivantes :
--autofix
- formate automatiquement les fichiers json
--indent ...
- Contrôle l'indentation (soit un nombre pour un nombre d'espaces, soit une chaîne d'espaces). La valeur par défaut est 2 espaces.
--no-ensure-ascii
préserve les caractères Unicode au lieu de les convertir en séquences d'échappement
--no-sort-keys
- lors de la correction automatique, conserve l'ordre original des clés (au lieu de trier les clés)
--top-keys comma,separated,keys
- Clés à conserver en haut des mappages.
requirements-txt-fixer
Trie les entrées dans requis.txt et contraintes.txt et supprime l'entrée incorrecte pour pkg-resources==0.0.0
sort-simple-yaml
Trie les fichiers YAML simples composés uniquement de clés de niveau supérieur, en préservant les commentaires et les blocs.
Notez que sort-simple-yaml
ne correspond par défaut à aucun files
car il applique un format très spécifique. Vous devez vous inscrire en définissant files
, par exemple :
- identifiant : sort-simple-yamlfiles : ^config/simple/
trailing-whitespace
Supprime les espaces de fin.
Pour conserver les sauts de ligne définitifs Markdown, utilisez args: [--markdown-linebreak-ext=md]
(ou d'autres extensions utilisées par vos fichiers markdown). Si, pour une raison quelconque, vous souhaitez traiter tous les fichiers comme des démarques, utilisez --markdown-linebreak-ext=*
.
Par défaut, ce hook supprime tous les espaces aux extrémités des lignes. Pour spécifier un jeu personnalisé de caractères à supprimer, utilisez args: [--chars,"<chars to trim>"]
.
check-byte-order-marker
: utilisez plutôt fix-byte-order-marker
Si vous souhaitez utiliser ces hooks, ils sont également disponibles sous forme de package autonome.
pip install pre-commit-hooks