
pylyzer est un analyseur de code / serveur de langage statique pour Python, écrit en rouille.
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked Assurez-vous que cargo / rustc est à jour, car Pylyzer peut être écrit avec les dernières fonctionnalités linguistiques (stables).
pylyzer file.pySi vous ne spécifiez pas de chemin de fichier, Pylyzer recherchera automatiquement le point d'entrée.
pylyzerCette option est utilisée lorsqu'un éditeur de LSP-Aware nécessite des arguments pour démarrer Pylyzer.
pylyzer --serverPour d'autres options, vérifiez le manuel.
En moyenne, Pylyzer peut inspecter les scripts Python plus de 100 fois plus rapidement que Pytype et Pyright 1 . Cela est dû en grande partie au fait que Pylyzer est mis en œuvre en rouille.
Bien que les rapports d'erreur de Pytype / Pyright soient illisibles, Pylyzer montre où l'erreur s'est produite et fournit des messages d'erreur clairs.
Pylyzer en tant que serveur de langue prend en charge diverses fonctionnalités, telles que l'achèvement et le renommage (le serveur de langue est une adaptation du serveur de langage ERG (ELS). Pour plus d'informations sur les fonctionnalités implémentées, veuillez consulter ici).
Vous pouvez installer l'extension VScode depuis le marché ou à partir de la ligne de commande:
code --install-extension pylyzer.pylyzerRuff, comme Pylyzer, est un outil d'analyse de code statique pour Python écrit en rouille, mais Ruff est un linter et Pylyzer est un damier et un serveur de langage. Pylyzer n'effectue pas de liaison et de formatage, et Ruff ne fait pas de vérification de type.
Pylyzer utilise le vérificateur de type du langage de programmation ERG en interne. Cette langue est un langage transpilé qui cible Python et a un système de type statique.
Pylyzer convertit les asts Python en AST ERG et les transmet au damier de type ERG. Il affiche ensuite les résultats avec des modifications appropriées.
L'inspecteur de type de Pylyzer suppose uniquement (potentiellement) le code typé statiquement, vous ne pouvez donc pas vérifier que le code utilise des réflexions, telles que exec , setattr , etc.
Pylyzer (= Système de type ERG) a ses propres déclarations de type pour les API standard Python. La saisie de toutes les API n'est pas complète et peut entraîner une erreur qu'une telle API n'existe pas.
Étant donné que la vérification du type de Pylyzer est conservatrice, vous pouvez rencontrer de nombreuses erreurs (peut-être fausses positives). Nous travaillons sur la correction de ceci, mais si vous êtes préoccupé par les erreurs de l'éditeur, veuillez désactiver la fonctionnalité de diagnostic.
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is , isinstance ) pyi (Stub) Fichiers Support # type: ... ) pippoetryuvNous recherchons des contributeurs pour nous aider à améliorer Pylyzer. Si vous êtes intéressé à contribuer et à avoir des questions, n'hésitez pas à nous contacter.
1 Le test de performance a été effectué sur MacBook (début 2016) avec un processeur Intel Core M3 à 1,1 GHz et une mémoire LPDDR3 de 8 Go de 18 Go 1867.