Python-Code analysieren mit dem Rust-Tool pylyzer

Das Tool pylyzer findet gängige Fehler in Python-Code und arbeitet auch als VS-Code-Extension. In Rust geschrieben, analysiert es besonders schnell.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen

(Bild: heise medien)

Lesezeit: 2 Min.

Das Open-Source-Projekt pylyzer analysiert Python-Skripte und dient als Sprachserver, beispielsweise für Visual Studio Code. Da die Maintainer das Tool in Rust geschrieben haben, ist es laut deren eigener Darstellung mehr als hundertmal schneller als vergleichbare Programme.

Zum Performance-Vergleich mit ptype und pyright nutzte das Team ein MacBook (Anfang 2016) mit einem Intel-M3-Prozessor (1,1 GHz) und 8 GB LPDDR3-Speicher (1867 MHz). Neben der Typenprüfung testet pylyzer Python-Skripte auf Zugriffsverletzungen (Out of Bounds) und nicht existierende Schlüssel in Dictionaries. Als Sprachserver beherrscht es Vervollständigen und Umbenennen. Zu diesen Zwecken steht es auch als VS-Code-Extension im Marketplace bereit und lässt sich mit code --install-extension pylyzer.pylyzer installieren.

Als weiteren Vorteil gegenüber anderen Analyse-Tools hebt die Website hervor, dass die Fehlermeldungen gut verständlich seien. Sowohl der Analyzer als auch der Sprachserver basieren auf entsprechenden Tools der Programmiersprache Erg, die nach Python transpiliert und diese Sprache um statische Typen erweitert – ähnlich wie TypeScript für JavaScript. pylyzer konvertiert Python in einen Abstract Syntax Tree (AST) und diesen dann in einen Erg-AST. Diesen bearbeitet der Typenprüfer von Erg.

pylyzer zeigt konkrete Fehlermeldungen bei der Analyse.

(Bild: pylyzer)

Das Entwicklungsteam weist auf eine Reihe von Einschränkungen hin: pylyzer geht von statisch typisiertem Code aus, Metafunktionen wie Reflections können zu Fehlern führen. Probleme kann es mit Nicht-Standard-APIs geben. Außerdem: "Da die Typprüfung von pylyzer konservativ ist, können viele (möglicherweise falsch erkannte) Fehler auftreten. Wir arbeiten daran, dies zu beheben …". Die minimale Voraussetzung für Rust ist Version 1.76.0.

Als Rust-Tool ist pylyzer laut dem Entwicklungsteam schneller als die Konkurrenz.

(Bild: pylyzer)

Weitere Informationen finden sich auf der GitHub-Seite des Projekts, das unter MIT-Lizenz veröffentlicht ist.

(who)