Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
sujet
- Le code backend (Flask) du projet auquel vous participez a eu du mal (toujours en cours) car Linter et le formateur n'ont pas été introduits.
Espérer
――Voulez-vous pelucher et formater avec Githook? ?? ?? ?? ?? ??
problème
- Le code écrit au début du projet ignore le pistolet pep8 et introduit des peluches, une erreur se produit.
――Je souhaite appliquer la correction automatique à la fois, mais la différence est trop grande pour être examinée.
――Je souhaite refactoriser le montant total, mais il n'y a pas d'effort et le code de test ne semble pas suffisant
faire des compromis
--Lint & format est appliqué au code nouvellement créé.
- Le code existant reste tel quel
- Révisez le code de test du code existant et implémentez-le en plus afin qu'il puisse être refactorisé à tout moment.
--La peluche est appliquée avec un crochet. Le format est décidé par Ningen (une mesure d'amertume).
--Existing est obligé de s'engager avec
git commit --no-verify
Méthode de développement
Si nouveau
- Code
- Lint s'exécute lors de la validation
- Appliquer le formateur
black hogehoge.py
- Si vous devez le réparer à la main, corrigez-le jusqu'à ce que l'erreur disparaisse et validez (lint
flake8 hogehoge.py
en spécifiant le fichier)
- Examen des demandes push to pull
Si vous souhaitez obtenir du code existant
- Code
- Lint s'exécute lors de la validation
- S'il y a une erreur, vérifiez l'erreur dans la partie supplémentaire avec
black hogehoge.py --diff
et corrigez-la à la main. (Lintflake8 hogehoge.py
par spécification de fichier)
- Lors de la validation, ignorez le hook avec
git commit --no-verify
- Examen des demandes push to pull
Paramètres du linter
linter utilise flake8.
pip install flake8
- Créez un fichier de configuration (créez
.flake8
à la racine du projet)
.flake8
[flake8]
ignore = E203, E266, E501, W503, F403, F401
max-line-length = 79
max-complexity = 18
select = B,C,E,F,W,T4,B9
* Modifiez les paramètres de flake8 selon vos besoins.
- Honnêtement, max-line-length <80 est trop peu dans les temps modernes
――E203, W503, W504 sont indispensables pour igonore en raison de la relation avec le noir. Autre que cela, le cas échéant
- Regardez ici
paramètres du formateur
le formateur utilise noir
pip install black
- Créez un fichier de configuration (créez
pyproject.toml
à la racine du projet)
pyproject.toml
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
\.git
)
'''
Match avec flocon8
――Je suis surpris quand j'obtiens parfois une erreur même si j'ai appliqué le formatr
paramètres de githook
Utilisez pre-commit pour définir le hook.
pip install pre-commit
- Créez un fichier de configuration (installez
.pre-commit-config.yaml
à la racine du projet)
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: flake8
Résumé
――En raison de la période d'introduction de l'outil, le travail manuel est inclus. Changer petit à petit
--Entrez d'abord le linter et le formateur. Les règles minimales (pep8) devraient être incluses
――Changez les règles lorsque vous avez du mal à écrire
- Si le code de test est correct, il n'y a pas de problème avec les codes existants.