
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。