如何让pyflakes忽略一些错误?
How to let pyflakes ignore some errors?
我正在使用使用 pyflakes 的 SublimePythonIDE。
我希望它忽略一些错误,例如:
(E501) line too long
(E101) indentation contains mixed spaces and tabs
最简单的方法是什么?
正如其他人所建议的,可能要注意警告。但是在那些你不能的情况下,你可以添加 # NOQA
到最后的违规行。请注意 #
之前的两个空格,因为这也是一种会被抱怨的风格。
如果 pyflakes 包裹在允许忽略特定错误的 flake8 中。
例如在项目中的文件中放入或添加到tox.ini
:
[flake8]
exclude = .tox,./build
filename = *.py
ignore = E501,E101
这可能与 How do I get Pyflakes to ignore a statement?
重复
在 Sublime 中配置插件几乎总是使用相同的过程:单击 Preferences -> Package Settings -> Plugin Name -> Settings-Default
打开(惊喜)默认设置。该文件通常包含插件的所有可能设置,通常还附有解释每个设置功能的注释。此文件无法修改,因此要自定义您打开 Preferences -> Package Settings -> Plugin Name -> Settings-User
的任何设置。我一般都是将默认设置的全部内容复制到用户文件中,然后根据需要自定义,然后保存关闭。
在这个特定插件的情况下,虽然它确实使用 pyflakes
(如广告所示),但它也使用了我在评论中提到的 pep8
, a style checker that makes use of the very same 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 的 recommendation 的 79 字符行是基于古代历史,当时终端监视器只有 80 个字符宽的屏幕,但它延续至今有几个原因:它向后兼容旧代码,一些设备是仍然在使用这些限制时,它看起来不错,它使得在更宽的显示器上更容易并排打开多个文件,并且它是可读的(编码时应该始终牢记这一点)。如果您希望有 90 或 100 个字符的限制,那很好(如果您的 team/project 同意),但请始终如一地使用它,并注意其他人可能使用不同的值。如果您想将 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.
我正在使用使用 pyflakes 的 SublimePythonIDE。 我希望它忽略一些错误,例如:
(E501) line too long
(E101) indentation contains mixed spaces and tabs
最简单的方法是什么?
正如其他人所建议的,可能要注意警告。但是在那些你不能的情况下,你可以添加 # NOQA
到最后的违规行。请注意 #
之前的两个空格,因为这也是一种会被抱怨的风格。
如果 pyflakes 包裹在允许忽略特定错误的 flake8 中。
例如在项目中的文件中放入或添加到tox.ini
:
[flake8]
exclude = .tox,./build
filename = *.py
ignore = E501,E101
这可能与 How do I get Pyflakes to ignore a statement?
重复在 Sublime 中配置插件几乎总是使用相同的过程:单击 Preferences -> Package Settings -> Plugin Name -> Settings-Default
打开(惊喜)默认设置。该文件通常包含插件的所有可能设置,通常还附有解释每个设置功能的注释。此文件无法修改,因此要自定义您打开 Preferences -> Package Settings -> Plugin Name -> Settings-User
的任何设置。我一般都是将默认设置的全部内容复制到用户文件中,然后根据需要自定义,然后保存关闭。
在这个特定插件的情况下,虽然它确实使用 pyflakes
(如广告所示),但它也使用了我在评论中提到的 pep8
, a style checker that makes use of the very same 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 的 recommendation 的 79 字符行是基于古代历史,当时终端监视器只有 80 个字符宽的屏幕,但它延续至今有几个原因:它向后兼容旧代码,一些设备是仍然在使用这些限制时,它看起来不错,它使得在更宽的显示器上更容易并排打开多个文件,并且它是可读的(编码时应该始终牢记这一点)。如果您希望有 90 或 100 个字符的限制,那很好(如果您的 team/project 同意),但请始终如一地使用它,并注意其他人可能使用不同的值。如果您想将 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.