Тихий пилинт ложноположительных при использовании django - PullRequest
11 голосов
/ 10 августа 2010

Я хотел бы разумно успокоить несколько ошибок Pylint при использовании Django.Наибольшее раздражение вызывают два фактора, возникающие из django.db.models.Model и доступа к объектам, а также django.test.TestCase.Во-первых, Pylint жалуется на любой код, который использует атрибут «объекты», говоря, что он не является членом.Во втором, после добавления семи тестов в тестовый пример, он жалуется на слишком много открытых методов (я предполагаю, что TestCase имеет четырнадцать)

Я знаю, что первая часть этого является дубликатом вопроса 115977 , но этот вопрос немного устарел, и ни одно из решений не очень хорошее, поэтому я подумал, что смогу решить проблему.

Я не хочу просто подавлять жалобы в Пилинте,как мне нравится видеть их в других обстоятельствах.

Ответы [ 3 ]

7 голосов
/ 10 августа 2010

Проще всего, если ваш проблемный код не находится вне вашего контроля (например, автоматически), это отключить жалобы в областях, которые, как вы знаете, являются ложными.Копирование примера прямо из сообщения, впервые представившего это решение :

1  class foo:
2    # pylint: disable=W1234
3    def bar(self):
4      # pylint: disable=W4321
5      pass
6    def gnurz(self):
7      pass
5 голосов
/ 23 июня 2015

Мне не нравится повторяться, но вот ответ, который действительно работает: https://stackoverflow.com/a/31000713/78234
Из ответа: Не отключайте и не ослабляйте функциональность Pylint, добавляя ignores или generated-members.
Используйте активно разработанный плагин Pylint, который понимает Django.
Этот плагин Pylint для Django работает довольно хорошо:

pip install pylint-django

и при запуске Pylint добавьте следующеепометить команду:

--load-plugins pylint_django

Подробное сообщение в блоге здесь .

4 голосов
/ 12 августа 2010

если вам не нужны предупреждения некоторых Pylint, например, несуществующий элемент (E1101) и слишком много открытых методов (R0904), вы можете легко закрыть его с помощью:

pylint --disable=E1101,R0904

если вас интересует только несколько контролеров, вы можете запустить pylint так:

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