Мы используем pylint в нашей системе сборки. У нас есть пакет python в нашей кодовой базе, который содержит одноразовый код, и я хотел бы временно отключить все предупреждения для модуля, чтобы я мог перестать беспокоить других разработчиков этими лишними сообщениями. Есть ли простой способ pylint: disable
выводить все предупреждения для модуля?
86
PyLint имеет пять «категорий» для сообщений (о которых я знаю).
В прошлом эти категории были очевидны, но теперь пронумерованные сообщения Pylint заменены именами. Например,
C0302
сейчасtoo-many-lines
. Но «C» говорит нам, чтоtoo-many-lines
это сообщение конвенции . Это сбивает с толку, потому что сообщения конвенции часто отображаются просто как предупреждение, поскольку многие системы (например, Syntastic ), похоже, классифицируют все как предупреждение или ошибку. Однако отчет PyLint все еще разбивает вещи на эти категории, поэтому он определенно поддерживается.Ваш вопрос конкретно относится к предупреждениям , и все имена предупреждений PyLint начинаются с 'W'.
Мне было немного сложно отследить это, но этот ответ в конечном итоге привел меня к ответу. PyLint по-прежнему поддерживает отключение целых категорий сообщений. Итак, чтобы отключить все предупреждения , вы должны:
Это можно использовать в командной строке:
Или вы можете поместить его в свой файл pylintrc:
Примечание: возможно, у вас уже есть
disable
опция в вашем rc-файле, и в этом случае вы должны добавить «W» в этот список.Или вы можете встроить его в свой код, где он будет работать в той области, в которую он помещен:
# pylint: disable=W
Чтобы отключить его для всего файла, лучше всего поместить его в самый верх файла. Однако даже в самом верху файла я обнаружил, что все еще получаю
trailing-newlines
предупреждающее сообщение (технически предупреждение соглашения , но я добираюсь до этого).В моем случае у меня была библиотека, написанная кем-то очень давно. Это работало хорошо, поэтому не было необходимости беспокоиться о современных соглашениях Python и т. Д. Все, что меня действительно волновало, это ошибки, которые, вероятно, нарушат мой код.
Мое решение заключалось в том, чтобы отключить все сообщения с предупреждениями , соглашениями и рефакторингом для этого одного файла, только поместив следующую команду PyLint в первую строку:
# pylint: disable=W,C,R
Помимо вышеупомянутого сообщения для завершающих символов новой строки, это было именно то, что мне нужно.
источник
Да, вы можете указать
# 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
источник
disable=locally-disabled
можно добавить в файл pylintrc.Другой вариант - использовать параметр
--ignore
командной строки, чтобы пропустить анализ некоторых файлов.источник
Мой вариант использования - запустить
pylint *.py
для обработки всех файлов в каталоге, за исключением того, что я хочу пропустить один конкретный файл.Добавление
#pylint: skip-file
привело к сбою pylintI: 8, 0: Ignoring entire file (file-ignored)
. Добавление#pylint: disable=file-ignored
этого не исправляет. Предположительно, это глобальная ошибка, а не файловая.Решением было включить
--disable=file-ignored
параметры команды pylint. Чтобы понять это, потребовалось слишком много времени;file-ignored
при явном игнорировании файла не должно быть ошибки.источник
pylintrc
файл конфигурации, а не в параметр команды.