2010-12-09 4 views
26

pyLint ressemble à un bon outil pour exécuter l'analyse du code python. Cependant, notre objectif principal est d'attraper tous les bugs potentiels et de ne pas coder la convention. L'activation de toutes les vérifications de pyLint semble générer beaucoup de bruit. Des suggestions sur un ensemble de fonctionnalités pyLint que vous utilisez et est efficace?Meilleures pratiques de PyLint?

Répondre

23

Vous pouvez bloquer tous les avertissements/erreurs que vous n'aimez pas, via:

pylint disable = [Erreur, erreur]

J'ai bloqué ces (la description de http://www.logilab.org/card/pylintfeatures

W0511: Utilisé lorsqu'une note d'avertissement en tant que FIXME ou XXX est détectée

W0142: Utilisé * ou * magic * Utilisé lorsqu'une fonction ou une méthode est appelée en utilisant * args ou ** kwargs pour répartir les arguments, ce qui n'améliore pas la lisibilité et doit être utilisé avec précautionW0141: Fonction intégrée utilisée% r Utilisé lorsqu'une fonction intégrée listée en noir est utilisée (voir l'option de mauvais fonctionnement). Les fonctions habituelles listées en noir sont celles de map, ou filter, où Python propose maintenant une alternative plus propre comme la compréhension de liste. R0912: Trop de branches (% s /% s) Utilisé lorsqu'une fonction ou une méthode comporte trop de branches, ce qui rend la tâche difficile à suivre.

R0913: Trop d'arguments (% s /% s) Utilisé lorsqu'une fonction ou une méthode prend trop d'arguments.

R0914: Trop de variables locales (% s /% s) Utilisé lorsqu'une fonction ou une méthode comporte trop de variables locales.

R0903: Trop peu de méthodes publiques (% s /% s) Utilisé lorsque la classe a trop peu de méthodes publiques, alors assurez-vous que cela en vaut vraiment la peine.

W0212: Accès à un membre protégé% s d'une classe client Utilisé lorsqu'un membre protégé (membre de classe avec un nom commençant par un trait de soulignement) accède en dehors de la classe ou un descendant de la classe où il est défini. W0312: Indentation trouvée avec% ss au lieu de% ss Utilisé lorsqu'il existe des tabulations et des espaces mixtes dans un module.

C0111: Docstring manquante Utilisé lorsqu'un module, une fonction, une classe ou une méthode n'a pas de docstring. Certaines méthodes spéciales telles que init ne nécessitent pas nécessairement une docstring.

C0103: Nom invalide "% s" (doit correspondre à% s) Utilisé lorsque le nom ne correspond pas à l'expression régulière associée à son type (constante, variable, classe ...).

+2

La description de désactiver des types particuliers de message est correcte, mais je crois que certains des choix spécifiques d'erreurs supprimées sont controversés. Des choses comme "Trop de variables locales/branches" est un énorme drapeau rouge. –

+0

L'option '-d, --disable' n'est pas une liste python avec' [] 'caractères; c'est juste une liste délimitée par des virgules. Donc pas '--disable = [C0111, R0912]'; utilisez '--disable = C0111, R0912'. – DrStrangepork

7

-E marquera uniquement ce que pylint pense être une erreur (c'est-à-dire aucun avertissement, aucune convention ...))

8

aux avertissements et aux conventions désactiver la persistance:

  1. Créer un fichier ~/.pylintrc en exécutant pylint --generate-rcfile > ~/.pylintrc
  2. Modifier ~/.pylintrc
  3. Uncomment disable= et changer cette ligne à disable=W,C
2

utilisant grep comme :

pylint my_file.py | grep -v "^C"