Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen

Thema

Hoffnung

――Wollen Sie mit Githook fusseln und formatieren? ?? ?? ?? ?? ??

Problem

Kompromiss

--Lint & Format wird auf den neu erstellten Code angewendet.

Entwicklungsmethode

Wenn neu

  1. Code
  2. Lint läuft beim Festschreiben
  3. Wenden Sie den Formatierer black hogehoge.py an
  4. Wenn Sie es von Hand reparieren müssen, beheben Sie es, bis der Fehler verschwindet, und legen Sie fest (lintflake8 hogehoge.py durch Angabe der Datei).
  5. Drücken Sie, um die Anforderungsüberprüfung abzurufen

Wenn Sie vorhandenen Code erhalten möchten

  1. Code
  2. Lint läuft beim Festschreiben
  3. Wenn ein Fehler auftritt, überprüfen Sie den Fehler im zusätzlichen Teil mit black hogehoge.py --diff und beheben Sie ihn von Hand. (Lintflake8 hogehoge.py nach Dateispezifikation)
  4. Überspringen Sie beim Festschreiben den Hook mit "git commit --no-verify"
  5. Drücken Sie, um die Anforderungsüberprüfung abzurufen

Linter-Einstellungen

linter verwendet flake8.

  1. pip install flake8
  2. Erstellen Sie eine Konfigurationsdatei (erstellen Sie ".flake8" im Projektstamm)

.flake8


[flake8]
ignore = E203, E266, E501, W503, F403, F401
max-line-length = 79
max-complexity = 18
select = B,C,E,F,W,T4,B9

* Ändern Sie die Flake8-Einstellungen entsprechend.

Formatierereinstellungen

Formatierer verwendet schwarz

  1. pip install black
  2. Erstellen Sie eine Konfigurationsdatei (erstellen Sie pyproject.toml im Projektstamm)

pyproject.toml


[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
    \.git
)
'''

Match mit flake8

――Ich bin überrascht, wenn ich manchmal einen Fehler erhalte, obwohl ich formatr angewendet habe

Githook-Einstellungen

Verwenden Sie Pre-Commit, um den Hook festzulegen.

  1. pip install pre-commit
  2. Erstellen Sie eine Konfigurationsdatei (installieren Sie .pre-commit-config.yaml im Projektstamm)
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: flake8

Zusammenfassung

――Durch die Einführungsphase des Werkzeugs sind manuelle Arbeiten enthalten. Ändern Sie nach und nach

Recommended Posts

Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Eine Geschichte über den Versuch, private Variablen in Python zu implementieren.
Ein Memorandum über die Umsetzung von Empfehlungen in Python
[Hinweis] Eine Geschichte über den Versuch, eine Klassenmethode mit zwei Unterbalken in der Python 3-Serie zu überschreiben.
So bestimmen Sie die Existenz eines Selenelements in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Eine Geschichte über den Versuch, mehrere Python-Versionen auszuführen (Mac Edition)
Die Geschichte des Versuchs, den Client wieder zu verbinden
Die Geschichte der Verarbeitung A von Blackjack (Python)
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Ausgabe in Form eines Python-Arrays
Eine Geschichte über das Erstellen eines Programms, mit dem die Anzahl der Instagram-Follower in einer Woche von 0 auf 700 erhöht wird
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
Die Geschichte eines hochrangigen Technikers, der versucht, das Überleben der Titanic vorherzusagen
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Die Geschichte des sofortigen Herunterladens des PDF-Dokuments der grundlegenden Information Engineer-Prüfung mit Python
So ermitteln Sie die Anzahl der Stellen in Python
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
In der Mitte der Entwicklung werden wir Alembic vorstellen
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Eine Geschichte über die Änderung des Master-Namens von BlueZ
Aufgaben zu Beginn eines neuen Python-Projekts
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Eine Geschichte, die beim Versuch, die Python-Version mit GCE zu aktualisieren, hängen blieb
Ich kann die Uhrenquelle tsc nicht finden! ?? Die Geschichte des Versuchs, einen Kernel-Patch zu schreiben
Eine Geschichte von Versuch und Irrtum beim Versuch, eine dynamische Benutzergruppe in Slack zu erstellen
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Über die Funktionen von Python
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Verwendung der Methode __call__ in der Python-Klasse
Die Geschichte der Einführung von Jedi (automatisches Vervollständigungspaket von Python) in Emacs
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Eine Geschichte über den Umgang mit dem CORS-Problem
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Ich bin gerade in Singapur. Eine Geschichte über das Erstellen eines LineBot und den Wunsch, einen unvergesslichen Job zu machen
Verwenden Sie Hash, um das Kollisionsurteil von etwa 1000 Bällen in Python zu erleichtern (im Zusammenhang mit dem neuen Corona-Virus).
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Was scheint eine Vorlage für den Standardeingabe-Teil des Competition Pro in Python3 zu sein
[Django] Eine Geschichte über das Feststecken in einem Sumpf beim Versuch, einen Reißverschluss mit einem Formular zu validieren [TDD]
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)