Как позволить pyflakes игнорировать некоторые ошибки?
Я использую SublimePythonIDE, который использует pyflakes. Есть некоторые ошибки, которые я хотел бы игнорировать, как:
(E501) line too long
(E101) indentation contains mixed spaces and tabs
какой самый простой способ сделать это?
2 ответов
настройка плагина в Sublime почти всегда использует одну и ту же процедуру: нажмите на Preferences -> Package Settings -> Plugin Name -> Settings-Default
чтобы открыть настройки (Сюрприз сюрприз) по умолчанию. Этот файл обычно содержит все возможные настройки для плагина, обычно вместе с комментариями, объясняющими, что каждый из них делает. Этот файл не может быть изменен, поэтому для настройки любых настроек вы открываете Preferences -> Package Settings -> Plugin Name -> Settings-User
. Обычно я копирую все содержимое настроек по умолчанию в файл пользователя, а затем настраиваю как желательно, затем сохранить и закрыть.
в случае данного конкретного плагина, в то время как он использует pyflakes
(как рекламируется), он также использует pep8
, проверка стиля, которая использует тот же самый PEP-8 официальное руководство по стилю Python, которое я упомянул в комментариях. Это знание полезно, потому что pyflakes
не использует конкретные коды ошибок, в то время как pep8
делает.
Итак, после изучения файла настроек плагина, мы находим а также "pyflakes_ignore"
один. С коды ошибок приехали из pep8
мы будем использовать этот параметр:
"pep8_ignore": [ "E501", // line too long
"E303", // too many blank lines (3)
"E402" // module level import not at top of file
]
обратите внимание, что коды E121, E123, E126, E133, E226, E241, E242 и E704 по умолчанию игнорируются, поскольку они не являются единогласно принятыми правилами, и ОПТОСОЗ 8 не применяет их.
по поводу длинных строк:
иногда длинные строки неизбежны. Пеп-8-х рекомендация of 79-символьные строки основаны на древней истории, когда терминальные мониторы имели только 80-символьные экраны, но это продолжается по сей день по нескольким причинам: он обратно совместим со старым кодом, некоторое оборудование все еще используется с этими ограничениями, это выглядит хорошо, это облегчает на более широких дисплеях иметь несколько файлов, открытых бок о бок, и это читаемо (то, что вы всегда должны иметь в виду при кодировании). Если вы предпочитаете иметь 90 - или 100 символов, это хорошо (если ваша команда/проект согласны с этим), но используйте его последовательно и помните, что другие могут использовать разные значения. Если вы хотите установить pep8
для большего значения, чем значение по умолчанию 80, просто измените "pep8_max_line_length"
настройка.
есть много способов либо уменьшить количество символов строк, чтобы остаться в пределах предела, или разделить длинные строки на несколько более коротких. В случае вашего примера в комментарии:
flag, message = FacebookUserController.AddFBUserToDB(iOSUserId, fburl, fbsecret, code)
вы можете сделать пару вещи:
# shorten the module/class name
fbuc = FacebookUserController
# or
import FacebookUserController as fbuc
flag, message = fbuc.AddFBUserToDB(iOSUserId, fburl, fbsecret, code)
# or eliminate it all together
from FacebookUserController import AddFBUserToDB
flag, message = AddFBUserToDB(iOSUserId, fburl, fbsecret, code)
# split the function's arguments onto separate lines
flag, message = FacebookUserController.AddFBUserToDB(iOSUserId,
fburl,
fbsecret,
code)
# There are multiple ways of doing this, just make sure the subsequent
# line(s) are indented. You don't need to escape newlines inside of
# braces, brackets, and parentheses, but you do need to outside of them.
как предлагают другие, возможно, прислушайтесь к предупреждениям. Но в тех случаях, когда вы не можете, вы можете добавить # NOQA
до конца оскорбительных строк. Обратите внимание на два пробела перед #
поскольку это тоже стиль, на который будут жаловаться.
и если pyflakes обернут в flake8, что позволяет игнорировать конкретные ошибки.
например в файл в проекте поставить или добавить в tox.ini
:
[flake8]
exclude = .tox,./build
filename = *.py
ignore = E501,E101
возможно, это дубликат с как я заставить Pyflakes игнорировать заявление?