Ce projet n'est plus activement maintenu.
Contenu
TidYPy est un outil qui résume un certain nombre d'autres outils d'analyse statique et facilite la configuration, l'exécution et la révision de leurs résultats.
*.py . En plus d'exécuter un certain nombre d'outils différents sur votre code, il peut également vérifier vos fichiers YAML, JSON, PO, POT et RST.pyproject.toml défini par PEP 518. Toutes les options pour tous les outils utilisées par Tidypy sont déclarées en un seul endroit, plutôt que de vous demander de configurer chaque outil d'une manière différente.# noqa dans votre source python pour ignorer facilement les problèmes signalés par n'importe quel outil. Lorsque TidPy est installé ( pip install tidypy ), la commande tidypy devrait être disponible dans votre environnement:
$ tidypy - help
Utilisation: TidYPy [Options] Commande [args] ...
Un outil qui exécute plusieurs outils d'analyse statique sur un projet Python
et regroupe les résultats.
Options:
--Version Afficher la version et la sortie.
- help afficher ce message et qui sortent.
Commandes:
Check Exécute les outils sur les fichiers du projet.
Par défaut-config publie une configuration par défaut qui peut être utilisée pour
Bootstrap votre propre fichier de configuration.
Les extensions publie une liste de toutes les extensions Tidypy disponibles.
Install-VCS installe TidYPy en tant que crochet pré-engagement dans le
VCS.
List-codes publie une liste de tous les codes de problème connues qui outils
peut signaler.
purge-config-cache supprime le cache des configurations récupérées à partir de
En dehors de la configuration principale.
RepoP-VCS supprime le crochet pré-commit Tidypy du
VCS.
Pour que TidPy analyse votre projet, utilisez la sous-commande check :
$ chèque Tidypy - help
Utilisation: TidPy Check [Options] [Path]
Exécute les outils sur les fichiers du projet.
Accepte un argument, qui est le chemin vers la base du projet Python.
S'il n'est pas spécifié, par défaut, le répertoire de travail actuel.
Options:
-x, - Exclude regex spécifie une expression régulière appariée
contre les chemins que vous voulez exclure
l'examen. Peut être spécifié multiple
fois. Remplace les expressions spécifiées
dans le fichier de configuration.
-T, - Tool [Bandit | dlint | éradicate | Jsonlint | Manifest | McCabe | Polint | Pyodestyle | Pydiatra | Pydocstyle | Pyflakes | Pylint | Pyroa | RSTLINT | Secrets | Vulture | Yamllint]
Spécifie le nom d'un outil à utiliser pendant
l'examen. Peut être spécifié multiple
fois. Remplace le fichier de configuration.
-R, --Report [Console, CSV, Custom, JSON, NULL, PYDESTYLE, PYLINT, PYLINT-PARSABLE, TOML, YAML] [: FileName]
Spécifie le nom d'un rapport à exécuter
après l'examen. Peut spécifier un
Nom du fichier de sortie en option à l'aide du formulaire -r
Rapport: nom de fichier. Si le nom de fichier n'est pas défini, le
Le rapport sera rédigé sur STDOUT. Peut être
spécifié plusieurs fois. Remplace le
Fichier de configuration.
-C, - Config Nom de fichier spécifie le chemin vers le Tidypy
Fichier de configuration à utiliser au lieu du
Configuration trouvée dans le projet
pyproject.toml.
- Travailleurs num_workers le nombre de travailleurs à utiliser pour simultanément
exécuter les outils. Remplace le
Fichier de configuration.
- Disable-Merge Désactiver la fusion des problèmes de divers
Outils lorsque Tidypy les considère équivalents.
Remplace le fichier de configuration.
- Disable-progress désactiver l'affichage de la barre de progression.
- Disable-noqa désactiver la capacité d'ignorer les problèmes en utilisant
Le commentaire "# NOQA" dans les fichiers Python.
--disable-config-cache désactiver l'utilisation du cache lors de la récupération
Configurations référencées par les "étend"
option.
- help afficher ce message et qui sortent.
Si vous devez générer un fichier de configuration squelette avec les options par défaut, utilisez la sous-commande default-config :
$ tidypy par défaut-config - help
Utilisation: TidPy par défaut-config [Options]
Sort une configuration par défaut qui peut être utilisée pour amorcer la vôtre
Fichier de configuration.
Options:
--Pyproject Sortie La configuration afin qu'elle puisse être utilisée dans un Pyproject.toml
déposer.
- help afficher ce message et qui sortent.
Si vous souhaitez voir une liste des codes d'émission possibles qui pourraient être retournés, utilisez la sous-commande list-codes :
$ codes de liste Tidypy - help
Utilisation: codes de liste TidPy [Options]
Sort une liste de tous les codes de problèmes connus que les outils peuvent signaler.
Options:
-T, - Tool [Bandit | dlint | éradicate | Jsonlint | Manifest | McCabe | Polint | Pyodestyle | Pydiatra | Pydocstyle | Pyflakes | Pylint | Pyroa | RSTLINT | Secrets | Vulture | Yamllint]
Spécifie le nom d'un outil dont les codes
devrait être sorti. Si cela n'est pas spécifié, par défaut
à tous les outils.
-f, - format [toml | json | yaml | csv]
Spécifie le format dans lequel les outils
devrait être sorti. Si cela n'est pas spécifié, par défaut
à Toml.
- help afficher ce message et qui sortent.
Si vous souhaitez installer ou supprimer TidYPy en tant que crochet de pré-engagement dans les VC de votre projet, utilisez les sous-communs install-vcs / remove-vcs :
$ Tidypy Install-VCS - Help
Utilisation: TidPy Install-VCS [Options] VCS [chemin]
Installe TidPy en tant que crochet pré-engagé dans les VC spécifiés.
Accepte deux arguments:
VCS: le système de contrôle de version pour installer le crochet. Choisissez parmi:
git, hg
Chemin: Chemin vers la base du référentiel pour installer le crochet.
S'il n'est pas spécifié, par défaut, le répertoire de travail actuel.
Options:
- STRICT Si le crochet devrait empêcher le commit si Tidypy trouve
problèmes.
- help afficher ce message et qui sortent.
$ tidypy retire-vcs - help
Utilisation: TidPy Retire-VCS [Options] VCS [chemin]
Supprime le crochet pré-engagé Tidypy des VC spécifiés.
Accepte deux arguments:
VCS: le système de contrôle de version pour supprimer le crochet. Choisissez parmi:
git, hg
Chemin: le chemin vers la base du référentiel pour retirer le crochet. Si
Non spécifié, par défaut, le répertoire de travail actuel.
Options:
- help afficher ce message et qui sortent.
Si vous souhaitez activer l'achèvement de bash pour Tidypy, exécutez ce qui suit dans votre coquille (ou mettez-le dans vos scripts de démarrage de bash):
$ eval "$ (_ Tidypy_Complete = Source Tidypy)"
Si vous ne souhaitez pas installer TidPy localement sur votre système ou dans votre VirtualEnv, vous pouvez utiliser l'image Docker publiée:
$ docker run --rm --tty --volume = `pwd`: / project tidypy / tidypy
La commande ci-dessus exécutera tidypy check le contenu du répertoire actuel. Si vous souhaitez l'exécuter sur un autre répertoire, modifiez le `pwd` en tout le chemin dont vous avez besoin (l'objectif est de monter votre répertoire de projet au volume du conteneur /project ).
Running Tidypy de cette manière a quelques limites, principalement autour du fait que, puisque Tidypy fonctionne dans son propre environnement python isolé, des outils comme Pylint ne pourront pas introspecter les packages installés localement, afin qu'il puisse signaler les faux positifs autour de "l'erreur d'importation", "non-nom-mode", "Non-Member", etc.
Si vous souhaitez exécuter une commande autre que check , passez-le simplement lorsque vous invoquez Docker:
$ docker run --rm --tty --volume = `pwd`: / project tidypy / tidypy tidypy lister codes
FAIRE
En plus d'ignorer des fichiers entiers, des outils ou des types de problèmes spécifiques à partir d'outils via votre fichier de configuration, vous pouvez également utiliser des commentaires dans vos fichiers source Python pour ignorer les problèmes sur des lignes spécifiques. Certains outils ont leur propre support et notation intégrés pour ce faire:
# pylint# nosec# noqa# noqa# pragma: whitelist secret TidyPy va au-delà de ces drapeaux spécifiques à l'outil pour implémenter # noqa sur une échelle globale pour les fichiers source Python. Il ignorera les problèmes pour les lignes qui ont le commentaire # noqa , quels que soient les outils qui soulèvent les problèmes. Si vous souhaitez uniquement ignorer un type de problème particulier sur une ligne, vous pouvez utiliser la syntaxe comme ce qui suit:
# noqa: code1, code2
Ou, si un code particulier est utilisé dans plusieurs outils, vous pouvez spécifier l'outil exact dans le commentaire:
# NOQA: Pyodestyle: Code1, Pylint: Code2
Ou, si vous souhaitez ignorer tout problème, un outil spécifique augmente sur une ligne, vous pouvez spécifier l'outil:
# Noqa: @ pyodestyle, @ pylint
Vous pouvez, bien sûr, mélanger et faire correspondre les trois notations en un seul commentaire si vous en avez besoin:
# NOQA: Code1, Pylint: Code2, @ Pyodestyle
Vous pouvez désactiver le comportement NOQA de TidPy en spécifiant l'option --disable-noqa sur la ligne de commande, ou en définissant l'option noqa sur false dans votre fichier de configuration. Une mise en garde, cependant: actuellement le pyodestyle et le pydocstyle ne respectent pas cette option et honorera toujours les commentaires # noqa qu'ils trouvent.
Hors de la boîte, Tidypy comprend la prise en charge d'un certain nombre d'outils:
Tidypy comprend un certain nombre de méthodes différentes pour présenter et / ou exporter les résultats de l'analyse d'un projet. Hors de la boîte, il fournit ce qui suit:
filename , line , character , tool , code , message .TidyPy comprend une poignée de plugins / intégrations qui l'accrochent à d'autres outils.
--tidypy sur la ligne de commande lorsque vous exécutez PyTest, ou l'incluez-vous dans le cadre de la propriété addopts dans votre configuration PyTest.--with-tidypy sur la ligne de commande lorsque vous exécutez le nez, soit définir la propriété with-tidypy sur 1 dans votre setup.cfg .tidypy . Pour l'activer, vous pouvez spécifier --extend=tidypy.plugin.pbbt sur la ligne de commande lorsque vous exécutez PBBT, soit définir la propriété extend dans votre setup.cfg ou pbbt.yaml sur tidypy.plugin.pbbt . Une interface simple existe pour étendre Tidypy pour inclure plus et différents outils et journalistes. Pour ajouter un outil, créez une classe qui étend Tidypy.tool, et dans votre setup.py , déclarez une entry_point pour tidypy.tools qui pointe vers votre classe:
entrée_poies = {
«tidypy.tools»: [
'myCooltool = path.to.model: myCooltoolClassName',
],
}
Pour ajouter un journaliste, le processus est presque identique, sauf que vous étendez TiDYPY.Report et déclarez une entry_point pour tidypy.reports .
Oui, ça arrive. La philosophie que j'ai choisi de suivre avec cet outil est que je ne voulais pas qu'il me cache quoi que ce soit. Je voulais que son comportement par défaut exécute chaque outil de sa suite en utilisant leur paramètre le plus odieux. Ensuite, lorsque je peux voir la portée complète des dégâts, je peux alors décider de désactiver des outils ou des problèmes spécifiques via une configuration au niveau du projet. J'ai pensé que si quelqu'un prenait le temps de mettre en œuvre un chèque pour un problème particulier, il doit penser qu'il a une certaine valeur. Si mon outillage me cache cela par défaut, je ne pourrai pas en tirer des avantages.
En général, je ne recommande pas de commencer à utiliser des liners ou d'autres types d'analyseurs statiques lorsque vous pensez que vous avez "terminé". Vous devez les intégrer dans votre flux de travail au début d'un projet - tout comme vous le feriez (ou devriez) vos tests unitaires. De cette façon, vous trouvez les choses tôt et apprenez d'eux (ou les désactivez). C'est beaucoup moins intimidant une tâche à gérer lorsque vous les abordez progressivement.
Les contributions sont les bienvenues. Surtout si ce sont des corrections de bogues! Pour pirater sur ce code, il suffit de le cloner, puis d'exécuter make setup . Cela créera un VirtualEnv avec tous les outils dont vous aurez besoin. Le Makefile a également une cible test pour exécuter la suite Pytest et une cible lint pour exécuter Tidypy sur lui-même.
Tidypy est libéré en vertu des termes de la licence du MIT.