如何让pyflakes忽略一些错误?

时间:2015-06-07 20:56:00

标签: python sublimetext pyflakes

我正在使用使用pyflakes的SublimePythonIDE。 我希望忽略一些错误,如:

(E501) line too long
(E101) indentation contains mixed spaces and tabs

最简单的方法是什么?

2 个答案:

答案 0 :(得分:9)

在Sublime中配置插件几乎总是使用相同的过程:点击 Preferences -> Package Settings -> Plugin Name -> Settings-Default 打开(惊喜)默认设置。此文件通常包含插件的所有可能设置,通常还包含解释每个插件的注释。此文件无法修改,因此要自定义您打开的任何设置 Preferences -> Package Settings -> Plugin Name -> Settings-User 。我通常会将默认设置的全部内容复制到用户文件中,然后根据需要进行自定义,然后保存并关闭。

对于这个特定的插件,虽然它确实使用了pyflakes(如宣传的那样),但它也使用了pep8,这是一种使用相同PEP-8的样式检查器。我在评论中提到的官方Python风格指南。这些知识非常有用,因为pyflakes没有使用特定的错误代码,pep8会这样做。

因此,在检查插件的设置文件后,我们会找到"pep8_ignore"选项以及"pyflakes_ignore"选项。由于error codes来自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,因为它们不是一致接受的规则,而PEP 8不会强制执行这些规则。

关于长线:

有时,长线是不可避免的。 PEP-8的79个字符的recommendation基于古代历史,当终端监视器只有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.

答案 1 :(得分:2)

正如其他人所说,可能会留意警告。但是在那些您不能的情况下,您可以将# NOQA添加到最终违规行。请注意#之前的两个空格,因为这也是一个会被抱怨的风格。

如果pyflakes被包裹在flake8中,允许忽略特定的错误。

例如,在项目的文件中放入或添加到tox.ini

[flake8]
exclude = .tox,./build
filename = *.py
ignore = E501,E101

这可能与How do I get Pyflakes to ignore a statement?

重复