J'essaie de désactiver l'avertissement C0321 ("plusieurs instructions sur une seule ligne" - je mets souvent des if
instructions avec de courts résultats sur une seule ligne sur la même ligne), dans Pylint 0.21.1 (si cela importe: astng 0.20. 1, commun 0.50.3, Python 2.6.6 (r266: 84292, 15 septembre 2010, 16:22:56)).
J'ai essayé d'ajouter disable=C0321
le fichier de configuration Pylint, mais Pylint insiste pour le signaler quand même. Variations sur cette ligne (comme disable=0321
ou disable=C321
) sont signalés comme des erreurs, donc pylint ne reconnaît l'option correctement, il est tout simplement l' ignorer.
Est-ce un bug Pylint ou est-ce que je fais quelque chose de mal? Y a-t-il un moyen de contourner cela? J'aimerais vraiment me débarrasser de ce bruit.
Réponses:
pylint --generate-rcfile
le montre comme ceci:Il semble donc que vous
~/.pylintrc
devriez avoir ladisable=
/ les ligne (s) dans une section[MESSAGES CONTROL]
.la source
~/.pylintrc
avec deux lignes,[MESSAGES CONTROL]
etdisable=C0321
. Cela empêche ce message.J'ai eu ce problème en utilisant Eclipse et je l'ai résolu comme suit:
dans le dossier pylint (par exemple
C:\Python26\Lib\site-packages\pylint
), maintenez la touche Maj enfoncée, cliquez avec le bouton droit et choisissez d'ouvrir la commande Windows dans ce dossier. Type:Cela crée le
standard.rc
fichier de configuration. Ouvrez-le dans le bloc-notes et sous[MESSAGES CONTROL]
, décommentezdisable=
et ajoutez les ID de message que vous souhaitez désactiver, par exemple:Enregistrez le fichier et dans Eclipse-> fenêtre-> préférences-> PyDev-> pylint, dans la zone d'arguments, tapez:
Maintenant ça devrait marcher ...
Vous pouvez également ajouter un commentaire en haut de votre code qui sera interprété par pylint:
lien vers tous les codes de message pylint
L'ajout, par exemple,
--disable-ids=C0321
dans la zone d'arguments ne fonctionne pas. Tous les messages Pylint disponibles sont stockés dans le dictionnaire_messages
, un attribut d'une instance de lapylint.utils.MessagesHandlerMixIn
classe. Lors de l'exécution de pylint avec l'argument--disable-ids=...
(au moins sans fichier de configuration), ce dictionnaire est initialement vide, ce qui déclenche une exception KeyError dans pylint (pylint.utils.MessagesHandlerMixIn.check_message_id()
. Dans Eclipse, vous pouvez voir ce message d'erreur dans la console Pylint (windows - show view - Console) , sélectionnez Pylint console dans les options de la console à côté de l'icône de la console.)la source
À partir de Pylint v. 0.25.3, vous pouvez utiliser les noms symboliques pour désactiver les avertissements au lieu de devoir vous souvenir de tous ces numéros de code . Par exemple:
Ce style est plus instructif que les codes d'erreur cryptiques et également plus pratique car les nouvelles versions de Pylint ne produisent que le nom symbolique, pas le code d'erreur.
La correspondance entre les noms symboliques et les codes peut être trouvée ici .
Un commentaire de désactivation peut être inséré sur sa propre ligne, en appliquant la désactivation à tout ce qui vient après dans le même bloc. Alternativement, il peut être inséré à la fin de la ligne pour laquelle il est censé s'appliquer.
Si les sorties de pylint «
Locally disabling
» messages, vous pouvez vous débarrasser d'eux en incluant le désactiver d'locally-disabled
abord comme dans l'exemple ci - dessus.la source
# pylint: disable=foo
inlyne me rend la ligne trop longue, alors maintenant je dois ajouter, line-too-long
! La langue dans la joue; c'est ce dont j'avais besoin et résout mon problème. Merci!Pour désactiver un avertissement localement dans un bloc, ajoutez
à ce bloc.
la source
[pylint] C0111: Missing method docstring
, donc trouver le numéro de code est facile, mais trouver le nom symbolique signifie que je dois le rechercher.Il existe plusieurs façons de désactiver les avertissements et les erreurs de Pylint. Lequel utiliser a à voir avec la façon dont vous souhaitez appliquer la désactivation à l'échelle mondiale ou locale - une décision de conception importante.
Approches multiples
pylintrc
fichiers.Cela implique plus que le
~/.pylintrc
fichier (dans votre répertoire $ HOME) tel que décrit par Chris Morgan. Pylint recherchera les fichiers rc, avec une priorité qui valorise les fichiers "plus proches" plus fortement:Un
pylintrc
fichier dans le répertoire de travail courant; ouSi le répertoire de travail actuel se trouve dans un module Python (c'est-à-dire qu'il contient un
__init__.py
fichier), recherche dans la hiérarchie des modules Python jusqu'à ce qu'unpylintrc
fichier soit trouvé; ouLe fichier nommé par la variable d'environnement PYLINTRC; ou
Si vous avez un répertoire personnel qui n'est pas
/root
:~/.pylintrc
; ou~/.config/pylintrc
; ou/etc/pylintrc
Notez que la plupart de ces fichiers sont nommés
pylintrc
- seul le fichier en~
a un premier point.À votre
pylintrc
fichier, ajoutez des lignes pour désactiver des messages de pylônes spécifiques. Par exemple:Désactive en outre la
pylint
ligne de commande, comme décrit par Aboo et Cairnarvon. Cela ressemblepylint --disable=bad-builtin
. Répétez--disable
pour supprimer les éléments supplémentaires.Désactive en outre des lignes de code Python individuelles, comme décrit par Imolit. Celles-ci ressemblent à
some statement # pylint: disable=broad-except
(commentaire supplémentaire à la fin de la ligne source d'origine) et s'appliquent uniquement à la ligne actuelle . Mon approche est de toujours les mettre à la fin des autres lignes de code afin de ne pas les confondre avec le style de bloc, voir ci-dessous.Désactive en outre la définition des blocs de code Python plus volumineux, jusqu'aux fichiers source complets.
Celles-ci ressemblent
# pragma pylint: disable=bad-whitespace
(notez lepragma
mot clé).Celles-ci s'appliquent à chaque ligne après le pragma. Mettre un bloc de ceux-ci en haut d'un fichier fait que les suppressions s'appliquent à l'ensemble du fichier. Placer le même bloc plus bas dans le fichier les fait s'appliquer uniquement aux lignes suivant le bloc. Mon approche consiste à toujours les mettre sur une ligne qui leur est propre afin qu'ils ne soient pas confondus avec le style à une seule ligne, voir ci-dessus.
Lorsqu'une suppression ne doit s'appliquer que dans une plage de code, utilisez
# pragma pylint: enable=bad-whitespace
(maintenant en utilisantenable
notdisable
) pour arrêter la suppression.Notez que la désactivation pour une seule ligne utilise la
# pylint
syntaxe tandis que la désactivation pour cette ligne à partir de là utilise la# pragma pylint
syntaxe. Ceux-ci sont faciles à confondre, en particulier lors du copier-coller.Mettre tous ensemble
J'utilise généralement un mélange de ces approches.
J'utilise
~/.pylintrc
pour des normes absolument mondiales - très peu d'entre elles.J'utilise
pylintrc
au niveau du projet à différents niveaux dans les modules Python lorsqu'il existe des normes spécifiques au projet. Surtout lorsque vous récupérez du code d'une autre personne ou équipe, vous pouvez trouver qu'ils utilisent des conventions que vous ne préférez pas, mais vous ne voulez pas retravailler le code. Le maintien des paramètres à ce niveau permet de ne pas diffuser ces pratiques à d'autres projets.J'utilise les pragmas de style bloc en haut des fichiers source uniques. J'aime désactiver les pragmas (arrêtez de supprimer les messages) pendant le développement, même pour les normes Pylint avec lesquelles je ne suis pas d'accord (comme "trop peu de méthodes publiques" - je reçois toujours cet avertissement sur les classes d'exception personnalisées) - mais il est utile de voir plus / peut-être tous les messages Pylint pendant que vous développez. De cette façon, vous pouvez trouver les cas que vous souhaitez résoudre avec des pragmas sur une seule ligne (voir ci-dessous), ou simplement ajouter des commentaires pour le prochain développeur pour expliquer pourquoi cet avertissement est OK dans ce cas.
Je laisse certains pragmas de style bloc activés même lorsque le code est prêt à être archivé. J'essaie d'en utiliser quelques-uns, mais quand cela a du sens pour le module, c'est OK de le faire comme documentation. Cependant j'essaye d'en laisser le moins possible, de préférence aucune.
J'utilise le style de commentaire sur une seule ligne pour corriger les erreurs particulièrement puissantes. Par exemple, s'il y a un endroit où cela a du sens
except Exception as exc
, je mets le# pylint: disable=broad-except
sur cette ligne au lieu d'une approche plus globale car c'est une étrange exception et doit être appelée, essentiellement comme une forme de documentation.Comme tout le reste en Python, vous pouvez agir à différents niveaux d'indirection. Mon conseil est de penser à ce qui appartient à quel niveau afin de ne pas vous retrouver avec une approche trop clémente de Pylint.
la source
~/.pylintrc
. À mon humble avis, la configuration doit généralement être liée au projet, et donc elle doit être quelque part dans le projet. Ce n'est qu'alors que la version peut être contrôlée et partagée avec le projet. A défaut, un clone peut ne pas avoir les personnalisations nécessaires pour que pylint se termine sans imprimer de messages.pragma
semble totalement inutile. Par exemple, j'ai# pylint: disable=missing-docstring
en haut de mon fichier, et cela s'applique à tout le reste du fichier. Veuillez vérifier et supprimer lepragma
préfixe de votre réponse.Vous pouvez également utiliser la commande suivante:
Ma version pylint est 0.25.1.
la source
--py3k
drapeau :(rc
fichier et (plus troublant), il génère en fait unrc
fichier correct avec--generate-rcfile
. Je dois aimer le code avec plusieurs branches qui font la même chose :(Ceci est une FAQ :
Vous pouvez désactiver les messages en:
E1101
,E1102
etc.no-member
,undefined-variable
etc.pylint --list-groups
.C
,R
,W
, etc.all
.Consultez la documentation (ou exécutez-la
pylint --list-msgs
dans le terminal) pour la liste complète despylint
messages de. Les documents fournissent également un bel exemple de la façon d'utiliser cette fonctionnalité.la source
Il vous suffit d'ajouter une ligne pour désactiver ce que vous souhaitez désactiver. Par exemple
Ajoutez ceci au # 1 dans votre module
la source
Si cela aide quelqu'un, si vous utilisez Visual Studio Code, il s'attend à ce que le fichier soit au format UTF8. Pour générer le fichier, j'ai couru
pylint --generate-rcfile | out-file -encoding utf8 .pylintrc
dans PowerShell.la source
Selon la documentation de pylint , le plus simple est d'utiliser ce tableau :
On peut donc utiliser:
la source
La syntaxe Python autorise plusieurs instructions sur une ligne, séparées par un point-virgule (;). Cependant, limiter chaque ligne à une seule instruction permet à un humain de suivre plus facilement la logique d'un programme lors de sa lecture.
Donc, une autre façon de résoudre ce problème est de comprendre pourquoi le message sur les peluches est là et de ne pas mettre plus d'une déclaration sur une ligne.
Oui, vous pouvez trouver plus facile d'écrire plusieurs instructions par ligne, cependant, pylint est destiné à tous les autres lecteurs de votre code et pas seulement à vous.
la source
Vous voudrez peut-être essayer ceci:
Modifiez "C: \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json" et ajoutez des
python.linting.pylintArgs
lignes à la fin comme indiqué ci-dessous:la source