Nous utilisons pylint dans notre système de construction. Nous avons un paquet python dans notre base de code qui contient du code jetable, et je voudrais désactiver temporairement tous les avertissements pour un module afin que je puisse arrêter de bugner les autres développeurs avec ces messages superflus. existe-t-il un moyen simple de pylint: disable
tous les avertissements pour un module?
De la FAQ PyLint
Avec Pylint <0,25, ajoutez
# pylint: disable-all
au début du module.
Pylint 0.26.1 et plus ont renommé cette directive en
# pylint: skip-file
(mais la première version sera conservée pour des raisons de compatibilité descendante).
Afin de faciliter la recherche des modules ignorés, un message de niveau information I0013 est émis. Avec les versions récentes de Pylint, si vous utilisez l'ancienne syntaxe, un message I0014 supplémentaire est émis.
PyLint a cinq "catégories" pour les messages (dont je suis au courant).
Ces catégories étaient très évidentes dans le passé, mais les messages numérotés Pylint ont maintenant été remplacés par des noms. Par exemple, C0302
est maintenant too-many-lines
. Mais le "C" nous dit que too-many-lines
est un message de convention . C'est déroutant, car les messages de convention apparaissent souvent comme un avertissement, car de nombreux systèmes (tels que Syntastic ) semblent tout classer comme un avertissement ou une erreur. Cependant, le rapport PyLint décompose toujours les choses en ces catégories, il est donc définitivement pris en charge.
Votre question fait spécifiquement référence aux avertissements et à tous les noms de message PyLint Warning start avec 'W'.
C'était un peu difficile pour moi de retracer cela, mais cette réponse m'a finalement conduit à la réponse. PyLint prend toujours en charge la désactivation de catégories entières de messages. Donc, pour désactiver tous les avertissements , vous feriez:
disable=W
Cela peut être utilisé sur la ligne de commande:
$ pylint --disable=W myfile.py
Ou, vous pouvez le mettre dans votre fichier pylintrc:
[MESSAGES CONTROL]
disable=W
Remarque: vous avez peut-être déjà l'option disable
dans votre fichier rc, auquel cas vous devez ajouter le 'W' à cette liste.
Ou, vous pouvez le mettre en ligne dans votre code, où il fonctionnera pour la portée dans laquelle il est placé:
# pylint: disable=W
Pour le désactiver pour un fichier entier, il est préférable de le placer tout en haut du fichier. Cependant, même en haut du fichier, j'ai trouvé que j'obtenais toujours le trailing-newlines
message d'avertissement (techniquement un avertissement de convention , mais j'y arrive).
Dans mon cas, j'avais une bibliothèque écrite par quelqu'un d'il y a longtemps. Cela fonctionnait bien, donc il n'y avait vraiment pas besoin de s'inquiéter de la moderne Python, etc. Tout ce qui m'intéressait vraiment, c'était les erreurs qui briseraient probablement mon code.
Ma solution a été de désactiver tous les Warning , Convention , et Refactorisation des messages pour ce fichier uniquement en plaçant la commande PyLint suivante sur la première ligne:
# pylint: disable=W,C,R
Mis à part le message susmentionné pour les nouvelles lignes de fin, cela a fait exactement ce dont j'avais besoin.
Oui, vous pouvez spécifier # pylint: skip-file
, mais il est déconseillé de désactiver tous les avertissements pour un fichier. Le code jetable ne doit pas exister dans une branche analysée par pylint.
Si vous souhaitez désactiver uniquement des avertissements spécifiques, vous pouvez le faire en ajoutant un commentaire tel que # pylint: disable=message-name
pour désactiver le message spécifié pour le reste du fichier, ou au moins jusqu'à # pylint: enable=message-name
.
Exemple:
# pylint: disable=no-member
class C123:
def __init__(self):
self.foo_x = self.bar_x
# pylint: enable=no-member
class C456:
def __init__(self):
self.foo_x = self.bar_x
Une autre option consiste à utiliser le --ignore
option de ligne de commande pour ignorer l'analyse de certains fichiers.
Mon cas d'utilisation est d'exécuter pylint *.py
Pour traiter tous les fichiers d'un répertoire, sauf que je veux ignorer un fichier particulier.
L'ajout de #pylint: skip-file
A provoqué l'échec de pylint avec I: 8, 0: Ignoring entire file (file-ignored)
. L'ajout de #pylint: disable=file-ignored
Ne résout pas ce problème. Vraisemblablement, c'est une erreur globale plutôt qu'une erreur spécifique au fichier.
La solution consistait à inclure --disable=file-ignored
Dans les options de la commande pylint. Il a fallu beaucoup trop de temps pour comprendre cela; il ne devrait pas y avoir d'erreur file-ignored
lorsque vous ignorez explicitement un fichier.