pyLint выглядит как хороший инструмент для запуска анализа кода Python. Тем не менее, наша главная цель — отловить любые потенциальные ошибки, а не правила кодирования. Включение всех проверок pyLint, похоже, создает много шума. Какие-нибудь предложения по набору функций pyLint, которые вы используете и эффективны?
Лучшие практики PyLint?
Ответы (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) Используется, когда имя не соответствует регулярному выражению, связанному с его типом (константа, переменная, класс...).
-d, --disable
не является списком Python с []
символами; это просто список, разделенный запятыми. Так что не --disable=[C0111,R0912]
; используйте --disable=C0111,R0912
.
- person DrStrangepork; 30.08.2017
Чтобы навсегда отключить предупреждения и соглашения:
- Создайте файл
~/.pylintrc
, запустивpylint --generate-rcfile > ~/.pylintrc
- Изменить
~/.pylintrc
- Раскомментируйте
disable=
и измените эту строку наdisable=W,C
-E будет отмечать только то, что pylint считает ошибкой (т.е. никаких предупреждений, никаких соглашений...)
используя grep как:
pylint my_file.py | grep -v "^C"