Как позволить 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 игнорировать заявление?