Лучшие практики PyLint?

pyLint выглядит как хороший инструмент для запуска анализа кода Python. Тем не менее, наша главная цель — отловить любые потенциальные ошибки, а не правила кодирования. Включение всех проверок pyLint, похоже, создает много шума. Какие-нибудь предложения по набору функций pyLint, которые вы используете и эффективны?


person amit    schedule 09.12.2010    source источник


Ответы (5)


Вы можете заблокировать любые предупреждения/ошибки, которые вам не нравятся, с помощью:

pylint --disable=error1,error2

Я заблокировал следующее (описание из http://www.logilab.org/card/pylintfeatures):

W0511: используется при обнаружении предупреждения как FIXME или XXX.

W0142: Используется * или * magic* Используется, когда функция или метод вызывается с использованием *args или **kwargs для отправки аргументов. Это не улучшает читаемость и должно использоваться с осторожностью.

W0141: Используемая встроенная функция %r Используется, когда используется встроенная функция из черного списка (см. параметр bad-function). Обычные функции черного списка — это такие, как map или filter , где Python теперь предлагает более чистую альтернативу, например, понимание списка.

R0912: Слишком много ветвей (%s/%s) Используется, когда у функции или метода слишком много ветвей, что затрудняет отслеживание.

R0913: Слишком много аргументов (%s/%s) Используется, когда функция или метод принимает слишком много аргументов.

R0914: Слишком много локальных переменных (%s/%s) Используется, когда функция или метод имеет слишком много локальных переменных.

R0903: Слишком мало общедоступных методов (%s/%s) Используется, когда в классе слишком мало общедоступных методов, поэтому убедитесь, что это действительно того стоит.

W0212: доступ к защищенному члену %s клиентского класса. Используется, когда защищенный член (т. е. член класса с именем, начинающимся с подчеркивания) является доступом за пределами класса или потомком класса, в котором он определен.

W0312: Обнаружен отступ с %ss вместо %ss. Используется, когда в модуле есть смешанные табуляции и пробелы.

C0111: Отсутствует строка документации Используется, когда модуль, функция, класс или метод не имеют строки документации. Некоторые специальные методы, такие как __init__, не обязательно требуют строки документации.

C0103: Неверное имя "%s" (должно совпадать с %s) Используется, когда имя не соответствует регулярному выражению, связанному с его типом (константа, переменная, класс...).

person muckabout    schedule 09.12.2010
comment
Описание отключения определенных типов сообщений правильное, но я считаю, что некоторые конкретные варианты подавления ошибок противоречивы. Такие вещи, как слишком много локальных переменных/ветвей, — это огромный красный флаг. - person Jonathan Hartley; 28.01.2014
comment
Параметр -d, --disable не является списком Python с [] символами; это просто список, разделенный запятыми. Так что не --disable=[C0111,R0912]; используйте --disable=C0111,R0912. - person DrStrangepork; 30.08.2017

Чтобы навсегда отключить предупреждения и соглашения:

  1. Создайте файл ~/.pylintrc, запустив pylint --generate-rcfile > ~/.pylintrc
  2. Изменить ~/.pylintrc
  3. Раскомментируйте disable= и измените эту строку на disable=W,C
person Jack Kelly    schedule 01.10.2013

Pyflakes должен хорошо служить вашей цели.

person user225312    schedule 09.12.2010

-E будет отмечать только то, что pylint считает ошибкой (т.е. никаких предупреждений, никаких соглашений...)

person gurney alex    schedule 12.02.2011

используя grep как:

pylint my_file.py | grep -v "^C"
person jumpy    schedule 11.08.2016