Dans plein de projets, il y a des hooks pre-commit pour gérer le linter et empêcher d’ajouter dans le dépot du code invalide selon le standard du projet. Ces scripts sont généralement des fichiers bash qu’on appelle dans .git/hooks/pre-commit
.
Inconvénient de cette approche:
.git
n’est pas versionnépre-commit est pas mal cool pour gérer les outils de pre-commit:
pip install pre-commit
pre-commit install
Chaque commit peut être refusé s’il ne respecte pas les règles:
la valeur ajoutée c’est que:
Sous Python, il n’y a pas de consensus dans l’écosystème sur la configuration et c’est toujours la galère de se souvenir quelle configuration va dans quel fichier. On va aussi voir que la longueur max est dupliquée dans les 3 outils…. Voici une config que j’utilise :
black est un linter configuré via pyproject.toml
[tool.black]
line-length = 119
isort et flake8 sont configurés via setup.cfg
# setup.cfg
# - https://timothycrosley.github.io/isort/
[isort]
combine_as_imports = True
ensure_newline_before_comments = True
force_grid_wrap = 0
include_trailing_comma = True
lines_after_imports = 2
line_length = 119
multi_line_output = 3
use_parentheses = True
# - https://www.flake8rules.com
[flake8]
max-line-length = 119