Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)

sujet

Espérer

――Voulez-vous pelucher et formater avec Githook? ?? ?? ?? ?? ??

problème

faire des compromis

--Lint & format est appliqué au code nouvellement créé.

Méthode de développement

Si nouveau

  1. Code
  2. Lint s'exécute lors de la validation
  3. Appliquer le formateur black hogehoge.py
  4. Si vous devez le réparer à la main, corrigez-le jusqu'à ce que l'erreur disparaisse et validez (lintflake8 hogehoge.py en spécifiant le fichier)
  5. Examen des demandes push to pull

Si vous souhaitez obtenir du code existant

  1. Code
  2. Lint s'exécute lors de la validation
  3. 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)
  4. Lors de la validation, ignorez le hook avec git commit --no-verify
  5. Examen des demandes push to pull

Paramètres du linter

linter utilise flake8.

  1. pip install flake8
  2. 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.

paramètres du formateur

le formateur utilise noir

  1. pip install black
  2. 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.

  1. pip install pre-commit
  2. 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

Recommended Posts

Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Une histoire sur la tentative d'implémentation de variables privées en Python.
Un mémorandum sur la mise en œuvre des recommandations en Python
[Note] Une histoire sur la tentative de remplacer une méthode de classe avec deux barres inférieures dans la série Python 3.
Comment déterminer l'existence d'un élément sélénium en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Une histoire sur la tentative d'exécuter plusieurs versions de Python (édition Mac)
L'histoire d'essayer de reconnecter le client
L'histoire du traitement A du blackjack (python)
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Écrire une note sur la version python de python virtualenv
L'histoire de la lecture des données HSPICE en Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Sortie sous la forme d'un tableau python
Une histoire sur la création d'un programme qui augmentera le nombre d'abonnés Instagram de 0 à 700 en une semaine
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
L'histoire d'un technicien de haut niveau essayant de prédire la survie du Titanic
Comment obtenir une liste de fichiers dans le même répertoire avec python
L'histoire du téléchargement de la dernière question PDF de l'examen d'ingénieur d'information de base avec Python à la fois
Comment obtenir le nombre de chiffres en Python
L'histoire de FileNotFound en Python open () mode = 'w'
Au milieu du développement, nous présenterons Alembic
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Une histoire sur le changement du nom principal de BlueZ
Tâches au démarrage d'un nouveau projet python
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Note Python: Le mystère de l'attribution d'une variable à une variable
Une histoire bloquée lors de la tentative de mise à niveau de la version Python avec GCE
Je ne trouve pas l'horloge tsc! ?? L'histoire d'essayer d'écrire un patch de noyau
Une histoire d'essais et d'erreurs essayant de créer un groupe d'utilisateurs dynamique dans Slack
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
À propos des fonctionnalités de Python
Découvrez la largeur apparente d'une chaîne en python
Comment utiliser la méthode __call__ dans la classe Python
L'histoire de l'introduction de Jedi (package de complétion automatique de python) dans emacs
Obtenez le nombre d'éléments spécifiques dans la liste python
Comment développer dans un environnement virtuel Python [Memo]
[Note] Importation de fichiers dans le répertoire parent en Python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Une histoire sur la façon de traiter le problème CORS
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Je suis à Singapour en ce moment Une histoire sur la création d'un LineBot et la volonté de faire un travail mémorable
Utilisez le hachage pour alléger le jugement de collision d'environ 1000 balles en Python (lié au nouveau virus corona)
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
[OCI] Script Python pour obtenir l'adresse IP d'une instance de calcul dans Cloud Shell
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Ce qui semble être un modèle pour la partie d'entrée standard du pro de la concurrence en python3
[Django] Une histoire sur le fait de rester coincé dans un marais en essayant de valider un zip avec un formulaire [TDD]
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)