PyLint Best Practices? - PullRequest
       35

PyLint Best Practices?

27 голосов
/ 09 декабря 2010

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

Ответы [ 5 ]

23 голосов
/ 09 декабря 2010

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

pylint --disable=error1,error2

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

W0511: используется при обнаружении предупреждающего примечания в виде FIXME или XXX

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

W0141: Используемая встроенная функция% r Используется, когда используется встроенная функция из черного списка (см. Параметр «Неисправная функция»). Обычные функции, занесенные в черный список, - это, например, карта или фильтр, где Python предлагает теперь более чистую альтернативу, такую ​​как понимание списка.

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

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

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

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

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

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

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

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

10 голосов
/ 01 октября 2013

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

  1. Создайте файл ~/.pylintrc, запустив pylint --generate-rcfile > ~/.pylintrc
  2. Редактировать ~/.pylintrc
  3. Раскомментируйте disable= и измените эту строку на disable=W,C
9 голосов
/ 09 декабря 2010

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

7 голосов
/ 12 февраля 2011

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

1 голос
/ 11 августа 2016

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

pylint my_file.py | grep -v "^C"
...