
pylyzer Rust로 작성된 Python 용 정적 코드 분석기 / 언어 서버입니다.
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는 평균적으로 Python 스크립트를 PyType 및 Vyright 1 보다 100 배 이상 더 빠르게 검사 할 수 있습니다. 이것은 주로 Pylyzer가 녹에서 구현되었다는 사실 때문입니다.
PyType/Pyright의 오류 보고서는 불가능하지만 Pylyzer는 오류가 발생한 위치를 보여주고 명확한 오류 메시지를 제공합니다.
언어 서버로서의 Pylyzer는 완성 및 이름을 바꾸는 것과 같은 다양한 기능을 지원합니다 (언어 서버는 ELS (ERG Language Server)의 적응입니다. 구현 된 기능에 대한 자세한 내용은 여기를 참조하십시오).
마켓 플레이스 또는 명령 줄에서 VSCODE 확장을 설치할 수 있습니다.
code --install-extension pylyzer.pylyzerPylyzer와 마찬가지로 Ruff는 Rust로 작성된 Python에 대한 정적 코드 분석 도구이지만 Ruff는 Linter이며 Pylyzer는 유형 체커 및 언어 서버입니다. Pylyzer는 Linting & Pormatting을 수행하지 않으며 Ruff는 유형 검사를 수행하지 않습니다.
Pylyzer는 내부적으로 ERG 프로그래밍 언어의 유형 검사기를 사용합니다. 이 언어는 파이썬을 대상으로하고 정적 유형 시스템을 갖는 전달 된 언어입니다.
Pylyzer는 Python Asts를 ERG ASTS로 변환하여 ERG의 유형 검사기로 전달합니다. 그런 다음 적절한 수정으로 결과를 표시합니다.
Pylyzer의 유형 Inspector는 정적으로 입력 한 코드 만 (잠재적으로) 올바른 코드 만 가정하므로 exec , setattr 등과 같은 반사를 사용하는 코드를 확인할 수 없습니다.
Pylyzer (= ERG의 유형 시스템)에는 Python 표준 API에 대한 자체 유형 선언이 있습니다. 모든 API의 타이핑은 완전하지 않으며 그러한 API가 존재하지 않는 오류가 발생할 수 있습니다.
Pylyzer의 유형 검사는 보수적이므로 많은 (아마도 허위 긍정적) 오류가 발생할 수 있습니다. 우리는이 문제를 해결하기 위해 노력하고 있지만 편집기 오류에 대해 우려하는 경우 진단 기능을 끄십시오.
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is , isinstance ) pyi (스텁) 파일 지원 # type: ... ) pippoetryuv우리는 Pylyzer를 개선하는 데 도움이되는 기고자를 찾고 있습니다. 기고에 관심이 있고 궁금한 점이 있으시면 언제든지 문의하십시오.
1 성능 테스트는 1.1GHz Intel Core M3 프로세서 및 8GB 1867 MHZ LPDDR3 메모리를 사용하여 MacBook (2016 년 초)에서 수행되었습니다.