
pylyzer ist ein statischer Code -Analysator / Sprachserver für Python, der in Rost geschrieben wurde.
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked Stellen Sie sicher, dass cargo / rustc auf dem neuesten Stand ist, da Pylyzer mit den neuesten (stabilen) Sprachfunktionen geschrieben werden kann.
pylyzer file.pyWenn Sie keinen Dateipfad angeben, sucht Pylyzer automatisch nach dem Einstiegspunkt.
pylyzerDiese Option wird verwendet, wenn ein LSP-bewusstes Editor Argumente benötigt, um Pylyzer zu starten.
pylyzer --serverWeitere Optionen überprüfen Sie das Handbuch.
Im Durchschnitt kann Pylyzer Python -Skripte mehr als 100 -mal schneller inspizieren als Pytype und Pyright 1 . Dies liegt hauptsächlich daran, dass Pylyzer in Rost implementiert ist.
Während die Fehlerberichte von Pytype/Pyright unleserlich sind, zeigt Pylyzer an, wo der Fehler aufgetreten ist, und liefert klare Fehlermeldungen.
Pylyzer als Sprachserver unterstützt verschiedene Funktionen wie Fertigstellung und Umbenennen (der Sprachserver ist eine Anpassung des ERG -Sprachservers (ELS). Weitere Informationen zu den implementierten Funktionen finden Sie hier).
Sie können die VSCODE -Erweiterung vom Marktplatz oder aus der Befehlszeile installieren:
code --install-extension pylyzer.pylyzerRuff ist wie Pylyzer ein statisches Code -Analyse -Tool für Python, das in Rost geschrieben wurde, aber Ruff ist ein Stranken und Pylyzer ist ein Typ Checker & Language Server. Pylyzer führt keine Linie und Formatierung durch und Ruff führt keine Typprüfung durch.
Pylyzer verwendet den Typ -Checker der Erg -Programmiersprache intern. Diese Sprache ist eine transpilierte Sprache, die auf Python abzielt und über ein statisches System verfügt.
Pylyzer konvertiert Python Asts in ERG -Asts und übergibt sie an den Typ von ERGs Typ. Anschließend werden die Ergebnisse mit geeigneten Änderungen angezeigt.
Der Typ -Inspektor von Pylyzer geht nur (potenziell) statisch getippt Code an, sodass Sie keine Code verwenden können, die Reflexionen wie exec , setattr usw. verwendet.
Pylyzer (= ERGs Typsystem) hat seine eigenen Typdeklarationen für die Python -Standard -APIs. Die Eingabe aller APIs ist nicht vollständig und kann zu einem Fehler führen, dass eine solche API nicht existiert.
Da Pylyzers Typprüfung konservativ ist, können Sie auf viele (möglicherweise falsch positive) Fehler stoßen. Wir arbeiten daran, dies zu beheben, aber wenn Sie sich über Editor -Fehler besorgt sind, deaktivieren Sie bitte die Diagnostikfunktion.
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is , isinstance ) pyi (Stub) -Dateien unterstützen # type: ... ) pippoetryuvWir suchen nach Mitwirkenden, die uns helfen, Pylyzer zu verbessern. Wenn Sie daran interessiert sind, Beiträge zu leisten und Fragen zu haben, können Sie sich gerne an uns wenden.
1 Der Leistungstest wurde auf MacBook (Anfang 2016) mit 1,1 GHz Intel Core M3 -Prozessor und 8 GB 1867 MHz LPDDR3 -Speicher durchgeführt.↩