如何让pyflakes忽略一些错误?

2024-05-16 13:11:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是升华硫氰酸盐,它用的是pyflakes。 我希望它忽略一些错误,例如:

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

最简单的方法是什么?


Tags: and方法错误linelongpyflakestoospaces
2条回答

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

对于这个特定的插件,虽然它确实使用了pyflakes(如广告所示),但它也使用了^{},一个样式检查器,它使用了我在评论中提到的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.

正如其他人所建议的,可能要注意这些警告。但在那些不能添加的情况下,可以将# NOQA添加到有问题的行的末尾。注意#前面的两个空格,因为这也是一个会被抱怨的样式。

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

例如,在项目中的文件中,put或add to tox.ini

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

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

相关问题 更多 >