Python-Implementierung „Codecheck“ in der IDE + Github-Aktion

Michał Milik
Michał Milik
May 8, 2025
8 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Einführung

Lint-Tools sind etwas, das unser Leben als Entwickler einfacher macht. Diese nützlichen Komponenten helfen uns, besser, schneller und produktiver zu sein. Stellen Sie sich die Situation vor, wenn Sie Code ausführen, der gerade geschrieben wurde, und er schlägt fehl... Sie überprüfen den Traceback, korrigieren den Code, führen ihn erneut aus und er schlägt immer wieder fehl. Das liegt daran, dass Sie beim ersten aufgetretenen Fehler gestoppt haben. Mit den Python-Code-Checker-Tools können Sie viele Fehler erkennen, bevor Sie Ihren Code überhaupt ausführen. Linters überprüfen jedoch nicht nur den Code auf Fehler. Sie überprüfen auch das Styling. Jeder weiß, dass es bei einem Projekt sehr wichtig ist, den Styling-Standard beizubehalten. Es hilft, Code zu lesen, im Team zu arbeiten, neue Funktionen hinzuzufügen und vor allem Bugs zu finden. Wir haben eine Menge Python-Lints zur Auswahl. Eines der beliebtesten ist Flake8. Dies ist eine Kombination aus vielen Tools, aber hauptsächlich Pyflakes (schnelle und niedrige Rate falsch positiver Python-Code-Checker-Fehlerprüfungs-App) und Pep8/Pycodestyle (Code anhand der Pep8-Konvention überprüfen). Es ist einfach zu bedienen und hat viele Erweiterungen, mit denen Sie Ihren Code gründlich überprüfen und strenge Stilregeln festlegen können.

Flake8-Grundlagen

Der erste Schritt zur Verwendung Flocke 8 besteht darin, es in Ihrer Umgebung zu installieren.

Hinweis Es empfiehlt sich, für jede einzelne Anwendung eine virtuelle Umgebung zu verwenden. Sie können zum Beispiel verwenden

VenvBash
python -m pip install flake8Du kannst aufrufen Flocke 8 über die Befehlszeile oder über Python.Bash
flake8 path/to/your/file.py
# oder
python -m flake8 path/to/your/file.pyAuf diese Weise überprüfen Sie die Python-Codeüberprüfung mithilfe der Standardkonfiguration. Aber du kannst es einfach anpassen.Bash
flake8 --max-line-length 120 path/to/your/file.pyWir setzen die maximale Zeilenlänge auf 120 Zeichen statt 79 gemäß pep8. Sie können die vollständige Liste der Optionen finden hier.In den meisten Fällen verwenden wir eine komplexere Konfiguration, die wir wiederverwenden möchten. Flake8 ermöglicht es uns, Einstellungen in einer Konfigurationsdatei zu speichern. Eine Beispiel-Konfigurationsdatei könnte so aussehen:

txt
[Flocke 8]
ignorieren = D203
ausschließen =
.git,
__pycache__,
docs/source/conf.py,
alt,
bauen,
distal
maximale Komplexität = 10
 

 

Aktiviere Linter in deiner IDE

Die Verwendung von flake8 über die Befehlszeile funktioniert, aber besser ist es, es direkt von Ihrer bevorzugten Python-IDE aus zu verwenden! Wir können Codefehler und Stilungenauigkeiten im Flug erkennen. Darüber hinaus wird die IDE fehlerhafte Linie/das fehlerhafte Objekt hervorheben. In diesem Artikel zeigen wir, wie Sie den Python-Liner in der VCS-IDE aktivieren, aber Sie können ihn in Ihrem Lieblingstool aktivieren. Stellen Sie zunächst sicher, dass Sie Flake8 in Ihrer Umgebung installiert haben. Öffnen Sie als Nächstes Virtual Code Studio, drücken Sie F1 und beginnen Sie mit der Eingabe „Python-Codeüberprüfung: Wählen Sie „linter“.

Und wähle flake8 aus der Liste.

Das ist es. Jetzt können wir die Ausgabe von Flake auf der Registerkarte „Probleme“ in der IDE sehen. Wie bereits erwähnt, gibt es viele Erweiterungen, mit denen wir Flake8 an unsere Anforderungen anpassen können. Stellen Sie sich zum Beispiel vor, dass wir in unserem Projekt gerne die Pydoc-Dokumentation hätten, um AUFMUNTERUNG 257 Regeln. Wir können benutzen flake8-docstrings Erweiterung. Zu diesem Zweck installiere das Paket mit pip:Bash
python -m pip install flake8-docstringsFlake8 neu laden, die Datei speichern (Strg + s) überprüfen und sehen, was wir bekommen

Wie bereits erwähnt, gibt es viele Erweiterungen, mit denen wir flake8 an unsere Anforderungen anpassen können. Stellen Sie sich zum Beispiel vor, dass wir in unserem Projekt gerne die Pydoc-Dokumentation hätten, um AUFMUNTERUNG 257 Regeln. Wir können benutzen flake8-docstrings Erweiterung. Zu diesem Zweck installiere das Paket mit pip:Bash
Python-Codeüberprüfung

-m pip install flake8-docstringsFlake8 neu laden, die Datei speichern (Strg + s) überprüfen und schauen, was wir bekommen

Wir können auch eine Konfigurationsdatei mit allen Einstellungen anhängen, die an unsere Anforderungen angepasst sind, wenn wir Flake8 von der IDE verwenden. Nehmen wir an, dass wir D403 nicht überprüfen müssen — „Das erste Wort der ersten Zeile sollte richtig groß geschrieben werden“. Die Konfigurationsdatei sollte wie folgt aussehen:txt
[Flocke 8]
ignore = D403Jetzt müssen wir VCS so konfigurieren, dass es diese Datei verwendet. Fügen Sie eine neue Zeile in der Datei settings.json im Unterordner.vscode hinzu Json
{"python.linting.flake8Args“: [“ --append-config=/path/to/flake8/config/.flake8"]} Die Datei sollte so aussehen:

[/vc_column_text] [vc_single_image image="6872" img_size="full "] [vc_column_text] Perfekt! Der Flake8 überprüft D403 nicht mehr.

 

Aufgabe „Code überprüfen“ in GitHub-Aktionen

Bisher haben wir unseren Code lokal überprüft, aber wir können das auch automatisch tun. Die Codeüberprüfung/Überprüfung ist Teil von CI/CD (genauer gesagt CI — Continues Integration). Auf diese Weise können wir den Code bei jedem Push ins Repository überprüfen, mit PR (Pull Request) oder was auch immer Sie wünschen, je nachdem, welchen Trigger Sie setzen. Wenn wir GitHub verwenden, um unseren Code in einem Repository zu speichern, gibt es eine einfache Möglichkeit, ihn zu implementieren — „GitHub-Aktionen“. „GitHub Actions“ ist ein integriertes CI/CD-Tool. Selbst im „kostenlosen“ Kontoplan bietet diese beliebteste Git-Repository-Plattform 2.000 Minuten pro Monat für die Automatisierung. Wir können sie verwenden, um unseren Code so zu erstellen, zu testen und bereitzustellen, wie wir es möchten. Lassen Sie uns zunächst ein Repository erstellen. Du schaffst es hier.

Sie können Ihre eigene Praxis erstellen. Lass uns das Git-Repository initiieren und ihre Dateien pushen. Befehle im Terminal ausführenBash
git init
git füge flake8_demo.py, .flake8 hinzu
git commit -m „Commit initiieren“
git remote füge den Ursprung hinzu git@github.com/:user_name/your_repo_name.git
Git Push Origin Master

Hinweis: Ich verwende eine SSH-Verbindung mit SSH-Schlüsseln. Sie können mehr Informationen dazu finden hier. Sie können aber auch https verwenden.

Wir sind bereit, einen GitHub-Aktionsworkflow zu erstellen. Wir müssen eine zusätzliche Verzeichnisstruktur unter unserem Repository erstellen. Der Pfad .github/workflows wird von GitHub erkannt und die deklarierten Workflows werden verarbeitet. „Aktionen“ sind in YAML geschrieben. So kann die Aktion „Python Checker“ eingerichtet werden.Jaml
Name: PythonChecker

auf:
pull_request:
Filialen: [master]

Jobs:
flake8check:
läuft auf: Ubuntu-latest
Strategie:
Matrix:
Python-Version: [3.8]

Name: flake8 check (über Python$ {{matrix.python-version}})
Schritte:
- Name: Checkout-Code-Repo
verwendet: actions/checkout @v2

- name: Python einrichten$ {{matrix.python-version}}
verwendet: Aktionen/Setup-Python @v2
mit:
Python-Version: $ {{matrix.python-version}}

- Name: Flake8-Erweiterungen installieren
ausführen: |
python -m pip install --upgrade pip
wenn [-f. /requirements-flake8.txt]; dann python -m pip install -r. /requirements-flake8.txt; fi

- Name: Check ausführen
ausführen: |

#stop die Überprüfung, ob Flake8-Fehler vorliegen
flake8 --config=.flake8

Versuchen wir zu verstehen, wie es funktioniert. In der ersten Zeile geben wir den Namen unserer Aktion an. Dieser Name wird im Tab „Aktion“ des Portals sichtbar sein - das zeige ich später. Im zweiten Hauptknoten geben wir einen Trigger für unseren Workflow an. Unsere Aktion beginnt bei PR zur Master-Branch. Unter dem Knoten „Jobs“ beschreiben wir die Umgebung und die einzelnen Schritte des Workflows. Jeder Workflow kann viele Jobs haben. In unserem Fall gibt es eine Job-ID „flake8check“, die auf der neuesten Version von Ubuntu OS mit der Matrixlistenvariablen „python-version“ mit einem Wert '3.8' ausgeführt wird. Die Matrix-Funktion kann verwendet werden, um denselben Job auszuführen, beispielsweise mit einer anderen Version von Pythons. Unser Job wird „flake8 check (via Python {matrix_variable})“ heißen und dieser Name wird auf GitHub angezeigt. Schließlich kamen wir zu einer Beschreibung der Schritte. Es gibt vier Schritte mit Namensparametern und Schrittkonfiguration:

  • „Checkout Code Repo“ ruft den Filialcode ab, den wir mit „master“ über „actions/checkout @v2“ zusammenführen möchten. Das ist eine Aktion vom Github Action Marketplace.
  • „Python einrichten“ ist eine weitere Aktion von Marketplace, bei der Python in unserer Umgebung installiert wird.
  • „Flak8-Erweiterungen installieren“ verwenden Sie den Befehl „run“, um den bereitgestellten Code im Betriebssystem-Terminal auszuführen. Es aktualisiert das Pip-Tool und installiert alle notwendigen Python-Module (Flake8 und Flake8-Docstrings)
  • Der letzte Schritt „Check ausführen“ ist der Aufruf der Flake8-Anwendung mit unserer Konfigurationsdatei.

Jetzt kennen wir den Code, also schauen wir uns an, wie er funktioniert.Bash
git checkout -b python_checker
git füge .github/workflows/python_checker.yaml requirements-flake8.txt hinzu
git commit -m „add GitHub action“ Ich habe PR vom Zweig „python_checker“ zum „master“ auf dem Github-Portal erstellt, weil es unsere Aktion auslöst. Danach können wir die Ergebnisse auf der Registerkarte „Aktionen“ sehen.

Wie wir vermuten, ist der Job gescheitert. Wir können die Details überprüfen, nachdem wir auf den Workflow-Lauf geklickt haben.

Die Aktionen von GitHub sind einfach zu entwickeln und wir können sie für viele andere Aufgaben verwenden. Außerdem haben wir selbst im kostenlosen Kontoplan 2000 Minuten für unsere Jobs. Gesamter Code verwendet in diesem Artikel finden Sie auf
 

 https://github.com/michalmi-dss/flake8_check_code

Was ist eine relationale Datenbank? Vor- und Nachteile relationaler Datenbanken.

Denormalisierung von Datenbanken - was ist das und praktische Beispiele

Was ist Programmatic Advertising

Share this post
DevOps
Michał Milik
MORE POSTS BY THIS AUTHOR
Michał Milik

Curious how we can support your business?

TALK TO US