我们的许多模块都以:
try:
import json
except ImportError:
from django.utils import simplejson as json # Python 2.4 fallback.
Run Code Online (Sandbox Code Playgroud)
......这是整个文件中唯一的Pyflakes警告:
foo/bar.py:14: redefinition of unused 'json' from line 12
Run Code Online (Sandbox Code Playgroud)
我怎么能让Pyflakes忽略这个?
(一般情况下我会去阅读的文档,但链接已断开.如果没有人有答案,我只是读取源.)
小智 209
如果你可以使用flake8 - 它包含pyflakes以及pep8检查器 - 一行以
# NOQA
(其中空间很重要 - 代码末尾和#它与NOQA文本之间的2个空格)将告诉检查者忽略该行上的任何错误.
mfu*_*ger 45
我知道这是前一段时间受到质疑的,已经得到了解答.
但我想添加我通常使用的内容:
try:
import json
assert json # silence pyflakes
except ImportError:
from django.utils import simplejson as json # Python 2.4 fallback.
Run Code Online (Sandbox Code Playgroud)
是的,不幸的是,dimod.org与所有好吃的东西都在一起.
看看pyflakes代码,在我看来pyflakes的设计使它很容易被用作"嵌入式快速检查器".
要实现忽略功能,您需要编写自己的调用pyflakes检查器.
在这里您可以找到一个想法:http://djangosnippets.org/snippets/1762/
请注意,上面的代码段仅用于注释放在同一行.要忽略整个块,您可能需要在块docstring中添加'pyflakes:ignore',并基于node.doc进行过滤.
祝好运!
我使用pocket-lint进行各种静态代码分析.以下是用于忽略pyflakes的pocket-lint所做的更改:https://code.launchpad.net/~adiroiban/pocket-lint/907742/+merge/102882
这是pyflakes的猴子补丁,添加了# bypass_pyflakes注释选项.
#!/usr/bin/env python
from pyflakes.scripts import pyflakes
from pyflakes.checker import Checker
def report_with_bypass(self, messageClass, *args, **kwargs):
text_lineno = args[0] - 1
with open(self.filename, 'r') as code:
if code.readlines()[text_lineno].find('bypass_pyflakes') >= 0:
return
self.messages.append(messageClass(self.filename, *args, **kwargs))
# monkey patch checker to support bypass
Checker.report = report_with_bypass
pyflakes.main()
Run Code Online (Sandbox Code Playgroud)
如果将其另存为bypass_pyflakes.py,则可以将其作为调用python bypass_pyflakes.py myfile.py.
http://chase-seibert.github.com/blog/2013/01/11/bypass_pyflakes.html
引用github问题门票:
虽然修复工作仍在进行中,但如果你想知道它是如何解决的:
Run Code Online (Sandbox Code Playgroud)try: from unittest.runner import _WritelnDecorator _WritelnDecorator; # workaround for pyflakes issue #13 except ImportError: from unittest import _WritelnDecorator将_unittest和_WritelnDecorator与您需要的实体(模块,函数,类)进行对比
Flake 为您提供了一些忽略违规行为的选项。
我最喜欢的一种方式是使其明确并忽略特定的内联违规:
my invalid code # noqa: WS03
Run Code Online (Sandbox Code Playgroud)
您还有其他已经引用过的选项。
my invalid code # NOQA
Run Code Online (Sandbox Code Playgroud)
# flake8: noqa: E121, E131, E241, F403, F405
Run Code Online (Sandbox Code Playgroud)
或者配置为忽略它作为 flake8 配置中的参数。
| 归档时间: |
|
| 查看次数: |
48002 次 |
| 最近记录: |