11
votes

Pylint tranquille faux-positifs lors de l'utilisation de Django

J'aimerais soin de quelques erreurs de Pylint lors de l'utilisation de Django. Les deux qui causent la plus grande irritation sont lors de la dérivation de django.db.models.model et d'accéder aux objets, et django.test.descycase. Dans la première, Pylint se plaint de tout code qui utilise l'attribut 'objets', en disant que ce n'est pas un membre. Dans la seconde, après avoir ajouté sept tests à un étui à essai, il se plaint de trop de méthodes publiques (je devine que TestCase a quatorze)

Je sais que la première partie de ceci est un duplicata de la question 115977 , mais cette question est un peu vieux et aucune des solutions n'est très bonne, alors je pensais que je piquerais la question.

Je ne veux pas simplement supprimer les plaintes de Pylint, comme j'aime les voir dans d'autres circonstances.


0 commentaires

3 Réponses :


7
votes

Le plus facile, à condition que votre code problématique ne soit pas hors de votre contrôle (par exemple votre autogogène), est de désactiver les plaintes dans les domaines que vous savez qu'ils sont faux. Copier un exemple tout droit sorti de Le message qui a introduit la première fois cette solution A>:

1  class foo:
2    # pylint: disable=W1234
3    def bar(self):
4      # pylint: disable=W4321
5      pass
6    def gnurz(self):
7      pass


1 commentaires

Merci pour la réponse, et ce serait formidable s'ils pouvaient être désactivés une fois à l'intérieur de la classe, mais l'erreur est signalée chaque fois que le membre est utilisé et doit être désactivé à chaque endroit utilisé. Pas vraiment pratique.



5
votes

Si vous ne vous souciez pas des avertissements de Pylint, comme un membre inexistant (E1101) et trop de méthodes publiques (R0904), vous pouvez facilement le fermer avec:

pylint --enable=basic,variables,classes,design,imports,newstyle,exceptions,format,miscellaneous,metrics,similarities


1 commentaires

L'OP mentionné qu'il ne veut pas supprimer ces erreurs globalement.



6
votes

Je n'aime pas me répéter, mais voici une réponse qui fonctionne réellement: https://stackoverflow.com/a/31000713/78234
De la réponse: Ne pas désactiver ou affaiblir la fonctionnalité Pylint en ajoutant ignore code> ou membres générés code>.
Utilisez un plugin pylint développé activement que comprend fort> django.
Ce plugin Pylint pour Django fonctionne assez bien:

--load-plugins pylint_django


1 commentaires

Cela devrait être la réponse, modifier les options de Pylint et désactiver les erreurs, il s'agit d'un élément d'un instrument émoussé car toute option est appliquée dans le monde entier.