web-dev-qa-db-fra.com

Comment exécuter Pylint pour tous les fichiers Python d'un répertoire

J'ai 

find . -iname "*.py" -exec pylint -E {} ;\

et

FILES=$(find . -iname "*.py")
pylint -E $FILES

Si je comprends bien, la première commande exécutera pylint pour chacun des fichiers Python, la seconde exécutera pylint une fois pour tous les fichiers. Je m'attendais à ce que les deux commandes renvoient la même sortie, mais elles renvoient des résultats différents. Je pense que ce diff est en quelque sorte lié aux importations et aux messages pylint F (échec), ce qui se produit lorsqu'une importation échoue et est pas sortie par pylint -E. 

Quelqu'un en a-t-il déjà fait l'expérience et pourrait expliquer pourquoi le diff se produit et quel est le meilleur moyen de faire fonctionner pylint?

21
Alan Evangelista

Mon un cent 

find . -iname "*.py" | xargs pylint 

Comment ça marche?

find trouve tous les fichiers se termine par py et passe à xargs, xargs exécute la commande pylint sur chaque fichier.

REMARQUE: Vous pouvez également attribuer n’importe quel argument à la commande pylint

MODIFIER:

Selon doc nous pouvons utiliser

[1] pylint mymodule.py

[2] répertoire pylint/mymodule.py

[2] fonctionnera si directory est un package python (c’est-à-dire qu’il a un fichier __init__.py ou qu’il s’agit d’un package d’espace de nommage implicite) ou si «directory» est dans le chemin du python.

26
sonus21

Il suffit de passer le nom du répertoire à la commande pylint. Pour lier tous les fichiers dans ./server:

pylint server
17
duhaime

Pour tous les fichiers python d'un répertoire, vous pouvez exécuter:

pylint *.py
pylint **/*.py
7
chilicheech

Si vous n'avez pas de fichier __init__.py dans le répertoire et que vous ne le souhaitez pas pour diverses raisons, mon approche est la suivante:

touch __init__.py; pylint <folder-name>; rm __init__.py
3
Ryan Feeley

Avez-vous essayé psospector ( https://pypi.org/project/prospector/ ) ou pylint_runner ( https://pypi.org/project/pylint_runner/ )

2
NN_

Si votre objectif est d’exécuter pylint sur tous les fichiers du répertoire de travail et des sous-dossiers en cours, voici une solution de contournement. Ce script exécute pylint sur le répertoire en cours. Si __init__.py n'existe pas, il le crée, exécute pylint, puis le supprime.

#! /bin/bash -
if [[ ! -e __init__.py ]]; then
    touch __init__.py
    pylint `pwd`
    rm __init__.py
else
    pylint `pwd`
fi
0
JeremyDouglass

Et si vous souhaitez exécuter votre fichier de configuration personnalisé, utilisez la commande ci-dessous. 

pylint --rcfile=.pylintrc <directory_name>
0
Santosh Pillai