
pylyzer является статическим анализатором кода / языковым сервером для Python, написанный в Rust.
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked Убедитесь, что cargo / rustc в курсе, так как Pylyzer может быть написан с последними (стабильными) языковыми функциями.
pylyzer file.pyЕсли вы не указаете путь к файлу, Pylyzer автоматически искупит точку входа.
pylyzerЭта опция используется, когда редактор LSP-AWARE требует аргументов для запуска Pylyzer.
pylyzer --serverДля других вариантов проверьте руководство.
В среднем, Pylyzer может осмотреть сценарии Python более чем в 100 раз быстрее, чем Pytype и Pyright 1 . Во многом это связано с тем, что Pylyzer реализован в ржавчине.
В то время как отчеты об ошибках Pytype/Pyright неразборчивы, Pylyzer показывает, где произошла ошибка и предоставляет четкие сообщения об ошибках.
Pylyzer как языковой сервер поддерживает различные функции, такие как завершение и переименование (языковой сервер - это адаптация языкового сервера ERG (ELS). Для получения дополнительной информации о реализованных функциях см. Здесь).
Вы можете установить расширение VSCODE с рынка или из командной строки:
code --install-extension pylyzer.pylyzerRuff, как и Pylyzer, является статическим инструментом анализа кода для Python, написанного в Rust, но Ruff - это Linter, а Pylyzer - это тип контроля и языкового сервера. Pylyzer не выполняет Linting & Formatting, а Ruff не выполняет проверку типов.
Pylyzer использует тип контроля языка программирования ERG внутри. Этот язык является транспилированным языком, который нацелен на Python и имеет статическую систему.
Pylyzer превращает Python AST в ERG ASTS и передает их в контроль типа ERG. Затем он отображает результаты с соответствующими модификациями.
Инспектор типа Pylyzer только предполагает (потенциально) статически напечатанный код, поэтому вы не можете проверить какой -либо код, использующий отражения, такие как exec , setattr и т. Д.
Pylyzer (= система типа ERG) имеет свои собственные объявления типа для стандартных API Python. Ввод всех API не завершен и может привести к ошибке, что такого API не существует.
Поскольку проверка типа Пилицера консервативна, вы можете столкнуться с многими (возможно, ложными положительными) ошибками. Мы работаем над тем, чтобы исправить это, но если вы обеспокоены ошибками редактора, пожалуйста, отключите функцию диагностики.
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is , isinstance ) pyi (stub) # type: ... ) pippoetryuvМы ищем участников, которые помогут нам улучшить Pylyzer. Если вы заинтересованы в внесении вопросов и у вас есть какие -либо вопросы, пожалуйста, не стесняйтесь обращаться к нам.
1 Тест производительности был проведен на MacBook (начало 2016 года) с процессором Intel Core M3 1,1 ГГц и 8 ГБ 1867 МГц памяти LPDDR3.↩