
pylyzer是用Rust編寫的Python的靜態代碼分析儀 /語言服務器。
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked確保cargo / rustc是最新的,因為Pyzer可以使用最新的(穩定)語言特徵編寫。
pylyzer file.py如果您沒有指定文件路徑,則Pylyzer將自動搜索入口點。
pylyzer當LSP感知編輯器需要參數啟動Pylyzer時,使用此選項。
pylyzer --server有關其他選項,請檢查手冊。
平均而言,Pylyzer可以比Pytype和Pyright 1快100倍以上。這在很大程度上是由於在Rust中實施了Pylyzer的事實。
雖然Pytype/Pyright的錯誤報告是難以辨認的,但Pylyzer顯示出錯誤的位置並提供明顯的錯誤消息。
Pyzer作為語言服務器支持各種功能,例如完成和重命名(語言服務器是ERG語言服務器(ELS)的改編。有關已實現功能的更多信息,請參見此處)。
您可以從市場或命令行安裝VSCODE擴展名:
code --install-extension pylyzer.pylyzer像Pylyzer一樣,Ruff是用Rust編寫的Python的靜態代碼分析工具,但Ruff是Linter,Pylyzer是類型的Checker&Lagansic Server。 Pylyzer不執行薄片和格式,Ruff不會執行類型檢查。
Pylyzer在內部使用ERG編程語言的類型檢查器。該語言是一種針對Python的轉移語言,並且具有靜態類型的系統。
Pylyzer將Python ASTS轉換為ERG ASTS,並將其傳遞給ERG類型的Checker。然後,它通過適當的修改顯示結果。
Pylyzer的類型Inspector僅假定(潛在的)靜態鍵入代碼,因此您無法查看任何代碼使用反射,例如exec , setattr ,等。
Pylyzer(= ERG的類型系統)在Python標準API中具有自己的類型聲明。所有API的鍵入尚未完成,並且可能導致錯誤的API不存在。
由於Pylyzer的類型檢查是保守的,因此您可能會遇到許多(可能是誤報)錯誤。我們正在努力解決此問題,但是如果您擔心編輯錯誤,請關閉診斷功能。
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is , isinstance ) pyi (存根)文件支持# type: ... ) pippoetryuv我們正在尋找幫助我們改善Pylyzer的貢獻者。如果您有興趣貢獻並有任何疑問,請隨時與我們聯繫。
1性能測試是在MacBook(2016年初)上使用1.1 GHz Intel Core M3處理器和8 GB 1867 MHz LPDDR3 MOMEMOR.INEME。