Отключить все предупреждения Pylint для файла

Мы используем Pylint в нашей системе сборки.

У нас есть пакет Python в нашей кодовой базе, который имеет одноразовый код, и я хотел бы временно отключить все предупреждения для модуля, чтобы я мог перестать беспокоить других разработчиков этими лишними сообщениями. Есть ли простой способ pylint: disable все предупреждения для модуля?


person mvanveen    schedule 19.04.2012    source источник


Ответы (5)


Из Часто задаваемые вопросы о Pylint:

С Pylint ‹0,25 добавьте

# pylint: disable-all

в начале модуля.

Pylint 0.26.1 и более поздние версии переименовали эту директиву в

# pylint: skip-file

(но первая версия будет сохранена для обратной совместимости).

Чтобы упростить поиск, какие модули игнорируются, выдается сообщение уровня информации I0013. В последних версиях Pylint, если вы используете старый синтаксис, выдается дополнительное сообщение I0014.

person enderskill    schedule 20.04.2012
comment
Примечание: это отключит все предупреждения и все ошибки. Если вы ищете способ отключить только предупреждения, см. Мой ответ на этой странице. - person eatcrayons; 20.04.2017

Pylint имеет пять категорий для сообщений ( о которых я знаю).

В прошлом эти категории были очень очевидны, но теперь пронумерованные сообщения Pylint были заменены именами. Например, C0302 теперь too-many-lines. Но «C» говорит нам, что too-many-lines - это сообщение Convention. Это сбивает с толку, потому что сообщения Convention часто отображаются просто как предупреждение, поскольку многие системы (например, Syntastic), похоже, классифицирует все как предупреждение или ошибку. Однако отчет Pylint все еще разбивает вещи на эти категории, поэтому он определенно поддерживается.

Ваш вопрос конкретно относится к Предупреждениям, и все имена сообщений Pylint Предупреждение начинаются с 'W'.

Мне было немного сложно отследить это, но этот ответ в конечном итоге привел меня к к ответу. Pylint по-прежнему поддерживает отключение целых категорий сообщений. Итак, чтобы отключить все предупреждения, вы должны:

disable=W

Это можно использовать в командной строке:

$ pylint --disable=W myfile.py

Или вы можете поместить его в свой файл pylintrc:

[MESSAGES CONTROL]
disable=W

Примечание. Возможно, у вас уже есть опция disable в вашем rc-файле, и в этом случае вам следует добавить к этому списку букву «W».

Или вы можете встроить его в свой код, где он будет работать в той области, в которую он помещен:

# pylint: disable=W

Чтобы отключить его для всего файла, лучше всего поместить его в самый верх файла. Однако даже в самом верху файла я обнаружил, что все еще получаю trailing-newlines предупреждающее сообщение (технически предупреждение соглашения, но я подхожу к этому).

В моем случае у меня была библиотека, написанная кем-то очень давно. Это работало хорошо, поэтому не было необходимости беспокоиться о современных соглашениях Python и т. Д. Все, что меня действительно волновало, это ошибки, которые, вероятно, нарушат мой код.

Мое решение заключалось в том, чтобы отключить все сообщения Предупреждение, Convention и Refactoring для этого одного файла, только поместив следующую команду Pylint в первую строку :

# pylint: disable=W,C,R

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

person eatcrayons    schedule 20.04.2017

Да, вы можете указать # pylint: skip-file в файле, но отключать все предупреждения для файла - плохая практика.

Если вы хотите отключить только определенные предупреждения, это можно сделать, добавив комментарий, например # pylint: disable=message-name, чтобы отключить указанное сообщение для оставшейся части файла или, по крайней мере, до # pylint: enable=message-name.

Пример:

# 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
person Acumenus    schedule 26.01.2017
comment
Чтобы избежать сообщения о том, что конкретное предупреждение было отключено, как это, disable=locally-disabled можно добавить в файл pylintrc. - person ColonelFazackerley; 21.02.2018

Другой вариант - использовать параметр командной строки --ignore, чтобы пропустить анализ некоторых файлов.

person sthenault    schedule 23.04.2012

Мой вариант использования - запустить pylint *.py для обработки всех файлов в каталоге, за исключением того, что я хочу пропустить один конкретный файл.

Добавление #pylint: skip-file привело к сбою Pylint с I: 8, 0: Ignoring entire file (file-ignored). Добавление #pylint: disable=file-ignored этого не исправляет. Предположительно, это глобальная ошибка, а не файловая.

Решением было включить --disable=file-ignored в параметры команды Pylint. Чтобы понять это, потребовалось слишком много времени; при явном игнорировании файла не должно быть file-ignored ошибки.

person Curt    schedule 03.06.2017
comment
В идеале, поместите его в pylintrc файл конфигурации, а не в параметр команды. - person Acumenus; 03.06.2017