Einführung
Täglich sind wir von verschiedenen Regeln umgeben, die uns das Leben erleichtern. Zum Beispiel müssen Fahrer die Straßenverkehrsordnung einhalten. Dadurch weiß jeder Fahrer, wie er sich auf der Straße verhält und welche Regeln zu beachten sind. Daher ist Autofahren sicherer, das Verhalten der Fahrer ist vorhersehbar und jeder weiß, wie man so fährt, dass andere seine Absichten verstehen. Für Python gibt es ein Äquivalent zur Straßenverkehrsordnung namens Python Enhancement Proposal (PEP). Dieses Dokument enthält Regeln zur Verbesserung Ihres Python-Codes, indem Sie ihn lesbarer und konsistenter machen. Leider können selbst erfahrene Programmierer Probleme haben, sich an alle im PEP geschriebenen Regeln zu erinnern. Aus diesem Grund wurden Python-Linters erstellt.
Was sind Linters?
Linters sind Programme, die Hinweise zur Codequalität geben, indem sie Warnungen und Fehler anzeigen. Sie können Ihre Python-Codefehler erkennen, ungültige Codemuster erkennen und Elemente finden, die nicht Ihren Konventionen entsprechen. Python-Linters haben eine Reihe von Vorteilen, wie zum Beispiel:
- Vermeidung von Fehlern in einem Projekt.
- Code für jeden Python-Programmierer lesbar machen.
- Abfangen unnötiger Codeteile.
- Code sauberer und weniger komplex machen.
Natürlich hat jeder Ansatz seine Nachteile:
- Linters können falsch positive Ergebnisse zurückgeben.
- Dieser Vorgang kann zeitaufwändig sein.
- Einige Fehler könnten übersehen werden.
Es gibt viele Python-Linters, die Sie in Ihrer täglichen Arbeit nutzen können. Die logische Lint informiert uns über tatsächliche Codefehler und die statistische Lint hilft dem Programmierer, Formatierungsprobleme zu erkennen. Ich werde zeigen, wie man die beliebtesten Linter installiert und ausführt, wie zum Beispiel:
- Pylint (Version 2.12.1)
- Flake8 (Version 4.0.1)
- PyFlakes (Version 2.4.0)
Außerdem finden Sie einen Vergleich der einzelnen Ausgaben. Dies könnte Ihnen helfen, den Linter auszuwählen, der Ihren Bedürfnissen am besten entspricht.
Ein Beispiel für Python-Code von schlechter Qualität
Lassen Sie uns einen Code schreiben, der mehrere Fehler enthält und nicht den PEP-Regeln entspricht. Dann überprüfen wir die Python-Codequalität mit verschiedenen Linters mit der Standardkonfiguration.
Im Folgenden sind einige Probleme mit dem Beispielcode aufgeführt:
- unnötiges Semikolon in Mathe importieren;
- fehlende Zeilenumbrüche und Leerzeichen
- fehlender Docstring
- ungebraucht globaler_Wert und Argument 1
- falscher Benennungsstil
- Element aus der Liste mit falschem Index auswählen
- Dividieren durch Null (Ausdruck)
- Methode aufrufen, die nicht existiert
- Rückgabe eines undefinierten Werts
- nicht notwendig Pass Aussage
Der Pylint
Der Pylint ist ein statisches Python-Codeanalyse-Tool, das Programmier- und Stilfehler, Bugs, ungültige Codekonstrukte und Inkonsistenzen mit den Codierungsstandards findet. Darüber hinaus kann Pylint an unsere Bedürfnisse angepasst werden, indem einige der gemeldeten Fehler zum Schweigen gebracht werden, z. B. können Ausgabenachrichten nur Informationen über Fehler bei den wichtigsten Programmierproblemen enthalten. Die Pylint-Nachricht besteht aus fünf Arten von Fehlern:
- R — bedeutet, dass Sie den Code nach guten Programmierpraktiken umgestalten müssen.
- C - Ihr Code verstößt gegen die Konvention der Codierungsstandards.
- W - Warnungen bei stilistischen Problemen oder leichten Programmierproblemen.
- E - bedeutet Fehler, es gibt wichtige Programmierprobleme.
- F - schwerwiegende Fehler, die die Codeverarbeitung stoppen.
Um Pylint zu bekommen, kannst du Pip benutzen.
Um diesen Python-Linter auszuführen, schreiben Sie einfach:
in Ihrer Konsole, wo script.py der Name des Python-Skripts mit unserem schlechten Code-Beispiel ist.
Die Pylint-Ausgabemeldung informiert über 15 Probleme, die gelöst werden sollten, wenn wir die Python-Codequalität verbessern wollen. Fassen wir sie in der folgenden Tabelle zusammen:

Pylint informierte uns über alle Fehler, die wir erwartet hatten, abgesehen von den Fehlern im Zusammenhang mit der Auswahl eines Elements aus einer Liste mit einem falschen Index, der Division durch den Ausdruck Null und fehlenden Leerzeichen. Pylint wies außerdem darauf hin, dass der Code nach der if-else-Anweisung nicht mehr erreichbar ist, was bedeutet, dass er niemals ausgeführt wird. Am Ende der Pylint-Nachricht können wir sehen, dass Pylint den Code mit -13,00/10 bewertet hat (ja, minus dreizehn!).
Flocke 8
Ein weiteres Beispiel für einen Python-Linter ist Flake8. Er gibt einen Bericht zurück, der Informationen über falschen Stil, Syntaxinkonsistenzen und Komplexitätsfehler enthält. Es gibt viele zusätzliche Optionen, mit denen Sie Flake8 an Ihre Bedürfnisse anpassen können. Flake8 führt die drei unten aufgeführten Tools aus, indem Sie einen einzigen Befehl starten Flocke 8:
- pycodestyle - Stil überprüfen
- PyFlakes - Syntax überprüfen
- Das McCabe-Drehbuch von Ned Batchelder — Überprüfung der Komplexität
Die Ausgabe von Flake8 besteht aus Fehlertypen wie:
- Fehler im E-Stil
- Warnungen im W-Stil
- F - Syntaxfehler
- C - Komplexitätsfehler
- N - Fehler bei Benennungskonventionen
Um Flake8 zu installieren, kannst du pip verwenden.
Flake8 auszuführen ist einfach. Führen Sie aus:
siehe die Ergebnisse.
Flake8 hat 9 mögliche Fehler gemeldet. Fassen wir sie in einer Tabelle zusammen.

Flake8 identifizierte das unnötige Semikolon, fehlende Zeilenumbrüche und Leerzeichen, das unbenutzte lokale Argument (aber das unbenutzte globale Argument wurde nicht gemeldet), gab einen undefinierten Wert zurück und die aufrufende Methode, die nicht existiert. Diese Ausgabenachricht ist definitiv weniger detailliert als die von Pylint, aber genau aus diesem Grund bevorzugen einige Entwickler Flake8. Sie berichtet nur über die wichtigsten Stil-, Syntax- und Komplexitätsfehler.
PY-Flocken
PyFlakes analysiert Python-Codes auf einfache Fehler. PyFlakes wird sich niemals über den Stil beschweren und sich sehr bemühen, niemals falsch positive Ergebnisse herauszugeben.
Um Pyflakes zu installieren, benutze pip:
Das Ausführen dieses Python-Linters ist Pylint und Flake8 sehr ähnlich. Schreiben Sie einfach den Programmnamen und den Pfad zu Ihrem Code wie im Beispiel:
PyFlakes meldete nur 3 Probleme. Lassen Sie uns sie in einer Tabelle zusammenfassen.

PyFlakes beschwert sich nur über die nicht existierende Aufrufmethode und das unbenutzte Argument. Die Ausgabe ist klar und Fehler werden nicht in bestimmte Typen eingeteilt.
Welcher ist der beste Python-Linter für Ihr Projekt?
Eine objektive Auswahl der besten Programmierwerkzeuge ist wahrscheinlich unmöglich. Die Sache ist, dass einige Technologien und Tools für eine Art von Projekten geeignet sind, während andere für andere Arten von Projekten besser sind. Also, wie wählen Sie die richtigen Linters für Ihr Projekt aus? Die in diesem Artikel erwähnten Python-Linters sind Open Source und kostenlos verfügbar. Daher wurden sie von vielen Fachleuten getestet und sind bei Entwicklern auf der ganzen Welt sehr beliebt. Wenn Sie Ihren Python-Code mit Linters verbessern möchten — und Sie sollten sie wirklich bei Ihrer Arbeit nutzen — probieren Sie zuerst die in diesem Artikel empfohlenen aus.
Fazit

In diesem Artikel habe ich drei Linter verglichen: Pylint, Flake8 und PyFlakes. Jedes Programm wurde ohne zusätzliche Einstellungen ausgeführt. Pylint meldete die meisten Fehler, darunter auch einige, die wir nicht erwartet hatten (unerreichbarer Code nach der if-else-Anweisung). Flake8 hat weniger Bugs gemeldet als Pylint. Es hat uns nicht über fehlende Docstrings, falsche Benennungsstile und die unnötige Pass-Anweisung informiert. Allerdings meldete nur Flake8 fehlende Leerzeichen. PyFlakes gab die kürzeste Fehlerliste zurück. Es wurde nur über das unbenutzte Argument, den undefinierten Wert und die nicht vorhandene Aufrufmethode berichtet. Keiner der getesteten Linter warnte uns davor, ein Element aus der Liste mit falschem Index oder dem Ausdruck Division durch Null auszuwählen. Trotzdem ist dies erklärbar, da es sich nicht um stilistische, sondern um logische Fehler handelt.
Es ist schwierig zu entscheiden, welcher der in diesem Artikel getesteten Linter der beste ist. Bitte beachten Sie, dass jedes der Tools mit zusätzlichen Einstellungen angepasst werden kann. Ich hoffe jedoch, dass der Artikel Ihnen bei der Auswahl des Linters geholfen hat, der Ihren Bedürfnissen am besten entspricht. Kontaktiere uns wenn Sie für Ihr Projekt Unterstützung von erfahrenen Python-Programmierern benötigen.
Weitere Informationen zu Data Engineering finden Sie in unserem Blog: