Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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, когда вы явно игнорируете файл.