Мы используем pylint в нашей системе сборки. У нас есть пакет python внутри нашей базы кода, который имеет код throwaway, и я хотел бы временно отключить все предупреждения для модуля, чтобы я мог перестать прослушивать других разработчиков с этими лишними сообщениями. Есть ли простой способ pylint: disable
всех предупреждений для модуля?
Pylint отключает все предупреждения для файла
Ответ 1
Из FAQ PyLint
С Pylint < 0,25, добавить
# pylint: disable-all
в начале модуля.
Pylint 0.26.1 и up переименовали эту директиву в
# pylint: skip-file
(но первая версия будет сохранена для обратной совместимости).
Чтобы облегчить поиск того, какие модули игнорируются, выводится сообщение I0013 информационного уровня. В последних версиях Pylint, если вы используете старый синтаксис, выдается дополнительное сообщение I0014.
Ответ 2
PyLint имеет пять "категорий" для сообщений (о которых я знаю).
Эти категории были очень очевидны, но пронумерованные сообщения Pylint теперь заменены именами. Например, C0302
теперь too-many-lines
. Но "C" сообщает нам, что too-many-lines
является сообщением о конференции. Это сбивает с толку, потому что сообщения в рамках Конвенции часто появляются как предупреждение, поскольку многие системы (такие как Syntastic), по-видимому, классифицируют все как либо предупреждение или ошибка. Тем не менее, отчет PyLint по-прежнему разрушает все эти категории, поэтому он все равно определенно поддерживается.
В вашем вопросе конкретно упоминаются предупреждения, и все имена сообщений PyLint Warning начинаются с "W".
Мне было трудно отследить это, но этот ответ в конечном итоге привел меня к ответу. PyLint по-прежнему поддерживает отключение целых категорий сообщений. Итак, чтобы отключить все предупреждения, вы должны:
disable=W
Это можно использовать в командной строке:
$ pylint --disable=W myfile.py
Или вы можете поместить его в свой файл pylintrc:
[MESSAGES CONTROL]
disable=W
Примечание. Возможно, у вас уже есть опция disable
в вашем rc файле, и в этом случае вы должны добавить "W" в этот список.
Или вы можете поместить его в свой код в свой код, где он будет работать для области, в которую он помещен:
# pylint: disable=W
Чтобы отключить его для всего файла, лучше всего поставить его в самый верх файла. Однако даже в самом верхнем углу файла я обнаружил, что все еще получаю предупреждающее сообщение trailing-newlines
(технически это условное предупреждение, но я добираюсь до этого).
В моем случае у меня была библиотека, написанная кем-то давным-давно. Он работал хорошо, поэтому не было необходимости беспокоиться о современной конвенции Python и т.д. Все, о чем я действительно беспокоился, были ошибками, которые, вероятно, нарушили бы мой код.
Мое решение состояло в том, чтобы отключить все сообщения Warning, Convention и Refactoring для этого одного файла, только поставив в первую строку следующую команду PyLint:
# pylint: disable=W,C,R
Помимо вышеупомянутого сообщения для трейлинг-строк, это сделало именно то, что мне нужно.
Ответ 3
Другой вариант - использовать параметр командной строки --ignore
, чтобы пропустить анализ для некоторых файлов.
Ответ 4
Да, вы можете указать # pylint: skip-file
, но неверно использовать все предупреждения для файла. Код утечки не должен существовать в ветки, которая анализируется pylint.
Если вы хотите отключить только определенные предупреждения, это можно сделать, добавив комментарий, например # pylint: disable=message-name
, чтобы отключить указанное сообщение для остальной части файла или, по крайней мере, до # pylint: enable=message-name
.
Пример:
# pylint: disable=no-member
class C123(object):
def __init__(self):
self.foo_x = self.bar_x
# pylint: enable=no-member
class C456(object):
def __init__(self):
self.foo_x = self.bar_x
Ответ 5
Мой вариант использования - запустить pylint *.py
для обработки всех файлов в каталоге, за исключением того, что я хочу пропустить один конкретный файл.
Добавление #pylint: skip-file
вызвало ошибку pylint с I: 8, 0: Ignoring entire file (file-ignored)
. Добавление #pylint: disable=file-ignored
не исправляет это. Предположительно, это глобальная ошибка, а не файл-специфический.
Решение заключалось в том, чтобы включить --disable=file-ignored
в параметры команды pylint. Это заняло слишком много времени, чтобы понять это; не должно быть ошибки file-ignored
, когда вы явно игнорируете файл.