pyLint выглядит как хороший инструмент для выполнения анализа кода python. Однако наша главная цель - поймать любые потенциальные ошибки, а не правила кодирования. Включение всей проверки pyLint, похоже, создает много шума. Любые предложения по набору функций pyLint, которые вы используете и которые эффективны?
Лучшие рекомендации PyLint?
Ответ 1
Вы можете заблокировать любые предупреждения/ошибки, которые вам не нравятся, через:
pylint --disable=error1,error2
Я заблокировал следующее (описание с http://www.logilab.org/card/pylintfeatures):
W0511: используется при обнаружении предупреждающего примечания в виде FIXME или XXX
W0142: Используется * или * magic * Используется, когда функция или метод вызывается с использованием *args
или **kwargs
для отправки аргументов. Это не улучшает читаемость и должно использоваться с осторожностью.
W0141: Используемая встроенная функция% r Используется, когда используется встроенная функция из черного списка (см. Параметр "Неисправная функция"). Обычные функции из черного списка - это те же функции, что и 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) Используется, когда имя не соответствует регулярному выражению, связанному с его типом (константа, переменная, класс...).
Ответ 2
Pyflakes должен хорошо служить вашей цели.
Ответ 3
Настойчиво отключить предупреждения и условные обозначения:
- Создайте файл
~/.pylintrc
, запустивpylint --generate-rcfile > ~/.pylintrc
- Изменить
~/.pylintrc
- Раскомментировать
disable=
и изменить эту строку наdisable=W,C
Ответ 4
-E будет указывать только то, что pylint считает ошибкой (т.е. никаких предупреждений, никаких соглашений...)
Ответ 5
используя grep like:
pylint my_file.py | grep -v "^C"