
pylyzerは、Python用の静的コードアナライザー /言語サーバーで、Rustで書かれています。
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked Pylyzerは最新の(安定した)言語機能で書かれている可能性があるため、 cargo / rustcが最新であることを確認してください。
pylyzer file.pyファイルパスを指定しない場合、Pylyzerはエントリポイントを自動的に検索します。
pylyzerこのオプションは、LSPを認識しているエディターがPylyzerを開始するために引数を必要とする場合に使用されます。
pylyzer --server他のオプションについては、マニュアルを確認してください。
平均して、PylyzerはPytypeやPyright 1よりも100倍以上速いPythonスクリプトを検査できます。これは主に、PylyzerがRustで実装されているという事実によるものです。
PyType/Pyrightのエラーレポートは判読できませんが、Pylyzerはエラーが発生した場所を示し、明確なエラーメッセージを提供します。
言語サーバーとしてのPylyzerは、完了や名前変更などのさまざまな機能をサポートしています(言語サーバーはERG言語サーバー(ELS)の適応です。実装された機能の詳細については、こちらをご覧ください)。
VSCODE拡張機能をマーケットプレイスまたはコマンドラインからインストールできます。
code --install-extension pylyzer.pylyzerRuffは、Pylyzerと同様に、Rustで書かれたPython用の静的コード分析ツールですが、Ruffはリナーであり、Pylyzerはタイプチェッカーと言語サーバーです。 Pylyzerは糸くずとフォーマットを実行せず、Ruffはタイプチェックを実行しません。
Pylyzerは、ERGプログラミング言語のタイプチェッカーを内部的に使用します。この言語は、Pythonを標的とする導入言語であり、静的型システムを備えています。
Pylyzerは、Python ASTSをERG ASTSに変換し、ERGのタイプチェッカーに渡します。次に、適切な変更で結果を表示します。
Pylyzerのタイプインスペクターは、(潜在的に)静的に型付けされたコードのみを想定しているため、 exec 、 setattrなどの反射を使用するコードを確認することはできません。
Pylyzer(= ERGのタイプシステム)には、Python標準APIの独自のタイプ宣言があります。すべてのAPIの入力は完全ではなく、そのようなAPIが存在しないというエラーが発生する可能性があります。
Pylyzerのタイプチェックは保守的であるため、多くの(おそらく偽陽性の)エラーに遭遇する可能性があります。これを修正することに取り組んでいますが、エディターのエラーが心配な場合は、診断機能をオフにしてください。
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is 、 isinstance ) pyi (スタブ)ファイルサポート# type: ... ) pippoetryuvPylyzerの改善を支援する貢献者を探しています。貢献に興味があり、質問がある場合は、お気軽にお問い合わせください。
1パフォーマンステストは、1.1 GHz Intel Core M3プロセッサと8 GB 1867 MHz LPDDR3メモリを備えたMacBook(2016年初頭)で実施されました。