Я пытаюсь отключить предупреждение C0321 («более одного оператора в одной строке» - я часто помещаю if
операторы с короткими однострочными результатами в одну строку) в Pylint 0.21.1 (если это имеет значение: astng 0.20. 1, общий 0.50.3, Python 2.6.6 (r266: 84292, 15 сентября 2010 г., 16:22:56)).
Я попытался добавить disable=C0321
файл конфигурации Pylint, но Pylint все равно настаивает на том, чтобы сообщить об этом. Изменения в этой строке (например, disable=0321
или disable=C321
) помечаются как ошибки, поэтому Pylint действительно распознает опцию, просто игнорирует ее.
Это ошибка Pylint, или я делаю что-то не так? Есть ли способ обойти это? Я бы очень хотел избавиться от этого шума.
Ответы:
pylint --generate-rcfile
показывает это так:Так что, похоже, у вас
~/.pylintrc
должны бытьdisable=
строки / s внутри раздела[MESSAGES CONTROL]
.источник
~/.pylintrc
с двумя строками[MESSAGES CONTROL]
иdisable=C0321
. Это предотвращает это сообщение.У меня была эта проблема с использованием Eclipse и я решил ее следующим образом:
в папке Pylint (например
C:\Python26\Lib\site-packages\pylint
), удерживая Shift, щелкните правой кнопкой мыши и выберите, чтобы открыть команду Windows в этой папке. Тип:Это создает
standard.rc
файл конфигурации. Откройте его в блокноте и под[MESSAGES CONTROL]
, раскомментируйтеdisable=
и добавьте идентификаторы сообщений, которые вы хотите отключить, например:Сохраните файл и в Eclipse-> window-> settings-> PyDev-> pylint в поле аргументов введите:
Теперь это должно работать ...
Вы также можете добавить комментарий в верхней части своего кода, который будет интерпретироваться Pylint:
ссылка на все коды сообщений Pylint
Добавление, например,
--disable-ids=C0321
в поле аргументов не работает. Все доступные сообщения Pylint хранятся в словаре_messages
, атрибуте экземпляраpylint.utils.MessagesHandlerMixIn
класса. При запуске pylint с аргументом--disable-ids=...
(по крайней мере, без файла конфигурации) этот словарь изначально пуст, вызывая исключение KeyError в pylint (pylint.utils.MessagesHandlerMixIn.check_message_id()
. В Eclipse вы можете увидеть это сообщение об ошибке в консоли Pylint (windows - show view - Console) выберите консоль Pylint из параметров консоли, кроме значка консоли.)источник
Начиная с версии Pylint v. 0.25.3, вы можете использовать символические имена для отключения предупреждений вместо того, чтобы запоминать все эти кодовые номера . Например:
Этот стиль более поучителен, чем загадочные коды ошибок, а также более практичен, поскольку в новых версиях Pylint выводится только символическое имя, а не код ошибки.
Соответствие между символическими именами и кодами можно найти здесь .
Комментарий об отключении можно вставить в отдельной строке, применив отключение ко всему, что последует в том же блоке. В качестве альтернативы, его можно вставить в конец строки, для которой он предназначен.
Если pylint выводит "
Locally disabling
" сообщения, вы можете избавиться от них, включивlocally-disabled
сначала отключение, как в примере выше.источник
# pylint: disable=foo
Inlyne делает мою линию слишком длинной, поэтому теперь мне нужно добавить, line-too-long
! Язык в щеку; это было то, что мне было нужно и решает мою проблему. Спасибо!Чтобы отключить предупреждение локально в блоке, добавьте
в этот блок.
источник
[pylint] C0111: Missing method docstring
, так что найти кодовый номер легко, но поиск символического имени означает, что я должен его найти.Есть несколько способов отключить предупреждения и ошибки от Pylint. Какой из них использовать, имеет отношение к тому, как глобально или локально вы хотите применить отключение - важное дизайнерское решение.
Несколько подходов
pylintrc
файлах.Это включает в себя больше, чем
~/.pylintrc
файл (в вашем каталоге $ HOME), как описано Крисом Морганом. Pylint будет искать rc-файлы с приоритетом, который оценивает «более близкие» файлы более высоко:pylintrc
Файл в текущем рабочем каталоге; илиЕсли текущий рабочий каталог находится в модуле Python (то есть содержит
__init__.py
файл), ищите иерархию модулей Python до тех пор, покаpylintrc
файл не будет найден; илиФайл с именем переменной среды PYLINTRC; или
Если у вас есть домашний каталог, которого нет
/root
:~/.pylintrc
; или~/.config/pylintrc
; или/etc/pylintrc
Обратите внимание, что большинство этих файлов имеют имена
pylintrc
- только файл в~
имеет начальную точку.В свой
pylintrc
файл добавьте строки, чтобы отключить определенные сообщения Pylint. Например:Далее отключается из
pylint
командной строки, как описано Aboo и Cairnarvon. Это выглядит такpylint --disable=bad-builtin
. Повторите,--disable
чтобы подавить дополнительные элементы.Далее отключает из отдельных строк кода Python, как описано Imolit. Они выглядят как
some statement # pylint: disable=broad-except
(дополнительный комментарий в конце исходной строки) и применяются только к текущей строке . Мой подход заключается в том, чтобы всегда помещать их в конце других строк кода, чтобы их не перепутать со стилем блоков, см. Ниже.Далее отключает определенные для больших блоков кода Python вплоть до завершения исходных файлов.
Они похожи
# pragma pylint: disable=bad-whitespace
(обратите внимание наpragma
ключевое слово).Это относится к каждой строке после прагмы. Помещение блока из них в начало файла заставляет подавления применяться ко всему файлу. Помещение того же блока ниже в файл делает их применимыми только к строкам, следующим за блоком. Мой подход заключается в том, чтобы всегда ставить их в отдельную строку, чтобы их не спутали со стилем в одну строку, см. Выше.
Когда подавление должно применяться только внутри диапазона кода, используйте
# pragma pylint: enable=bad-whitespace
(теперьenable
не используяdisable
) прекращение подавления.Обратите внимание, что отключение для одной строки использует
# pylint
синтаксис, в то время как отключение для этой строки использует# pragma pylint
синтаксис. Их легко спутать, особенно при копировании и вставке.Собираем все вместе
Я обычно использую сочетание этих подходов.
Я использую
~/.pylintrc
для абсолютно глобальных стандартов - очень немногие из них.Я использую уровень проекта
pylintrc
на разных уровнях в модулях Python, когда существуют стандарты для конкретного проекта. Особенно, когда вы принимаете код от другого человека или группы, вы можете обнаружить, что они используют соглашения, которые вы не предпочитаете, но вы не хотите переделывать код. Сохранение настроек на этом уровне помогает не распространять эту практику на другие проекты.Я использую прагмы стиля блока в верхней части отдельных исходных файлов. Мне нравится отключать прагмы (прекратить подавлять сообщения) в разгар разработки даже для стандартов Pylint, с которыми я не согласен (например, «слишком мало открытых методов» - я всегда получаю это предупреждение на пользовательских классах исключений) - но полезно видеть больше / возможно все сообщения Pylint во время разработки. Таким образом, вы можете найти случаи, к которым вы хотите обратиться, с помощью однострочных прагм (см. Ниже), или просто добавить комментарии для следующего разработчика, чтобы объяснить, почему это предупреждение в этом случае нормально.
Я оставляю некоторые прагмы блочного стиля включенными даже тогда, когда код готов к регистрации. Я пытаюсь использовать некоторые из них, но когда это имеет смысл для модуля, это нормально делать в качестве документации. Однако я стараюсь оставить как можно меньше, желательно ни одного.
Я использую стиль однострочного комментария для устранения особо серьезных ошибок. Например, если есть место, где это действительно имеет смысл
except Exception as exc
, я ставлю# pylint: disable=broad-except
эту строку вместо более глобального подхода, потому что это странное исключение, и его нужно вызывать, в основном как форму документации.Как и все остальное в Python, вы можете действовать на разных уровнях косвенности. Мой совет - подумать о том, что относится к какому уровню, чтобы не допустить слишком мягкого подхода к Pylint.
источник
~/.pylintrc
. ИМХО, конфигурация обычно должна быть привязана к проекту, и поэтому она должна быть где-то внутри проекта. Только тогда он может быть контролируемым по версии и предоставлен в распоряжение проекта. В противном случае клону может не хватить настроек, необходимых для выхода Pylint без печати сообщений.pragma
кажется совершенно ненужным. Например, у меня есть# pylint: disable=missing-docstring
в верхней части моего файла, и это относится ко всей оставшейся части файла. Пожалуйста, проверьте и удалитеpragma
префикс из вашего ответа.Вы также можете использовать следующую команду:
Моя версия Pylint 0.25.1.
источник
--py3k
флагом :(rc
он содержится в файле, и (что более неприятно) он действительно генерирует правильныйrc
файл с--generate-rcfile
. Должен любить код с несколькими ветками, которые делают одно и то же :(Это часто задаваемые вопросы :
Вы можете отключить сообщения:
E1101
иE1102
т. д.no-member
иundefined-variable
т. д.pylint --list-groups
.C
,R
,W
и т.д.all
.См. Документы (или запустить
pylint --list-msgs
в терминале) для получения полного спискаpylint
сообщений. Документы также предоставляют хороший пример того, как использовать эту функцию.источник
Вам просто нужно добавить одну строку, чтобы отключить то, что вы хотите отключить. Например
Добавьте это на # 1 в вашем модуле
источник
Если это кому-то поможет, если вы используете код Visual Studio, он ожидает, что файл будет в кодировке UTF8. Чтобы сгенерировать файл, я запустил
pylint --generate-rcfile | out-file -encoding utf8 .pylintrc
PowerShell.источник
Согласно pylint документации, проще всего использовать эту схему :
Так что можно использовать:
источник
Синтаксис Python допускает использование нескольких операторов в строке, разделенных точкой с запятой (;). Тем не менее, ограничение каждой строки одним оператором облегчает человеку следовать логике программы при ее чтении.
Итак, еще один способ решения этой проблемы - это понять, почему там есть сообщение lint, а не помещать в строку более одного утверждения.
Да, вам может быть проще написать несколько операторов в строке, однако pylint для любого другого читателя вашего кода, а не только для вас.
источник
Вы можете попробовать это:
Отредактируйте «C: \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json» и добавьте
python.linting.pylintArgs
строки в конце, как показано ниже:источник