Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Thema
- Der Backend-Code (Flask) des Projekts, an dem Sie teilnehmen, hatte Schwierigkeiten (läuft noch), da Linter und Formatierer nicht eingeführt wurden.
Hoffnung
――Wollen Sie mit Githook fusseln und formatieren? ?? ?? ?? ?? ??
Problem
- Der zu Beginn des Projekts geschriebene Code ignoriert die pep8-Pistole und führt Flusen ein. Es tritt ein Fehler auf.
――Ich möchte Autofix sofort anwenden, aber der Unterschied ist zu groß, um ihn zu überprüfen.
――Ich möchte den gesamten Betrag umgestalten, aber es gibt keinen Aufwand und der Testcode scheint nicht genug zu sein
Kompromiss
--Lint & Format wird auf den neu erstellten Code angewendet.
- Bestehender Code bleibt unverändert
- Überprüfen Sie den Testcode des vorhandenen Codes und implementieren Sie ihn zusätzlich, damit er jederzeit überarbeitet werden kann.
- Flusen werden mit Haken aufgetragen. Das Format wird von Ningen festgelegt (ein Maß für die Bitterkeit).
--Existing ist gezwungen, mit
git commit --no-verify
festzuschreiben
Entwicklungsmethode
Wenn neu
- Code
- Lint läuft beim Festschreiben
- Wenden Sie den Formatierer
black hogehoge.py
an
- Wenn Sie es von Hand reparieren müssen, beheben Sie es, bis der Fehler verschwindet, und legen Sie fest (lint
flake8 hogehoge.py
durch Angabe der Datei).
- Drücken Sie, um die Anforderungsüberprüfung abzurufen
Wenn Sie vorhandenen Code erhalten möchten
- Code
- Lint läuft beim Festschreiben
- 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)
- Überspringen Sie beim Festschreiben den Hook mit "git commit --no-verify"
- Drücken Sie, um die Anforderungsüberprüfung abzurufen
Linter-Einstellungen
linter verwendet flake8.
pip install flake8
- 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.
- Ehrlich gesagt ist die maximale Zeilenlänge <80 in der heutigen Zeit zu gering
――E203, W503, W504 werden für igonore benötigt, da es sich um Schwarz handelt. Ansonsten gegebenenfalls
- Schau hier
Formatierereinstellungen
Formatierer verwendet schwarz
pip install black
- 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.
pip install pre-commit
- 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
- Geben Sie zuerst Linter und Formatierer ein. Die Mindestregeln (pep8) sollten enthalten sein
――Ändern Sie die Regeln, wenn Sie Schwierigkeiten beim Schreiben haben
- Wenn der Testcode korrekt ist, gibt es kein Problem mit den vorhandenen.