None
Programmierung

Pylint HTML Reports

by Viktor Garske on Jan. 26, 2019, 10:23 p.m.
Pylint ist ein Werkzeug zur statischen Codeanalyse. Da die Option für anschauliche HTML-Reports seit Version 1.7 entfallen ist, muss nun ein kleiner Umweg eingelegt werden, der in diesem Artikel erläutert wird.

Mit der dynamischen Typisierung verfügt Python über eine Eigenschaft, durch die sich einige Bugs erst zur Laufzeit „entfalten“ und im worst-case zum Crash der Anwendung führen. Um dieses Risiko zu minimieren steht die statische Codeanalyse („linting“) zur Verfügung, um den Code auf häufige Muster von Schwachstellen zu untersuchen und einen einheitlichen Codingstyle (in Python die bekannt PEP 8) zu forcieren.

Unter Python ist Pylint durchaus bekannt und übernimmt zuverlässig diese Aufgaben. Oft besteht der Wunsch, die Ergebnisse der Analyse außerhalb des stdout-Outputs in HTML angezeigt zu bekommen. Leider wurde Pylint in Version 1.7 um die Option beraubt.

Um in der aktuellen Version 2.3.0 dennoch HTML-Reports zu erhalten, wird ein kleiner Umweg benötigt: hier muss der Report als JSON ausgegeben und dann in HTML umgewandelt werden. Benötigt werden die Pakete pylint und pylint-json2html.

pip install pylint pylint-json2html

In Punkto Konfiguration muss im project root die pylintrc mit folgendem Inhalt erstellt werden.

[MASTER]
load-plugins=pylint_json2html

[REPORTS]
output-format=jsonextended

Diese Konfiguration passt das Verhalten von pylint an. Der Aufruf

pylint moduledir/ > lint.json

(wobei moduledir natürlich der Name des Projekts ist) leitet nun die Ausgabe im JSON-Format in die Datei lint.json.

pylint-json2html -f jsonextended -o pylint.html < lint.json

generiert im letzten Schritt aus der über den per stdin eingeleiteten JSON-Datei eine HTML-Datei, deren Name mit der -o-Option spezifiziert wird. Die HTML-Reports sehen zwar schlicht aus, bieten aber sehr sinnvolle Information, die zur Erhöhung der Codequalität beitragen.

Tags:
Author image
Viktor Garske

Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.

Comments (0)

Comments are not enabled for this entry.