我如何让Pyflakes忽略一个陈述?

我们的很多模块都是从以下开始的:

try: import json except ImportError: from django.utils import simplejson as json # Python 2.4 fallback. 

…这是整个文件中唯一的Pyflakes警告:

 foo/bar.py:14: redefinition of unused 'json' from line 12 

我怎么能让Pyflakes忽略这个?

(通常我会去阅读文档,但链接被破坏,如果没有人有答案,我只会阅读源代码。)

如果你可以使用flake8来代替pyflakes以及pep8检查程序 – 一行结尾的行

# NOQA

(其中空格是重要的 – 代码和#之间有2个空格,它和NOQA文本之间有一个NOQA )会告诉检查器忽略该行上的任何错误。

我知道这是前一段时间提出质疑,已经回答了。

但是我想补充一下我通常使用的东西:

 try: import json assert json # silence pyflakes except ImportError: from django.utils import simplejson as json # Python 2.4 fallback. 

是的,不幸dimod.org与所有的好东西一起下来。

看着pyflakes代码,在我看来,pyflakes的devise使它很容易用作“embedded式快速检查器”。

为了实现忽略function,你需要编写自己的调用pyflakes检查器。

在这里你可以find一个想法: http : //djangosnippets.org/snippets/1762/

请注意,上述仅用于评论的片段位于同一行上。 为了忽略整个块,你可能需要在块docstring中添加'pyflakes:ignore',并根据node.doc进行过滤。

祝你好运!


我正在使用袖珍皮棉进行各种静态代码分析。 这里是在皮棉的变化,忽略pyflakes: https ://code.launchpad.net/~adiroiban/pocket-lint/907742/+merge/102882

这里是pyflakes的一个猴子补丁,它增加了一个# bypass_pylakes注释选项。

 #!/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() 

如果将其保存为bypass_pyflakes.py ,则可以将其作为python bypass_pyflakes.py myfile.py来调用。

http://chase-seibert.github.com/blog/2013/01/11/bypass_pyflakes.html

引用github问题单 :

虽然修复仍在进行,但如果您想知道如何解决这个问题:

 try: from unittest.runner import _WritelnDecorator _WritelnDecorator; # workaround for pyflakes issue #13 except ImportError: from unittest import _WritelnDecorator 

Substitude _unittest和_WritelnDecorator与您需要的实体(模块,函数,类)

– deemoowoor

您也可以使用__import__导入。 这不是pythonic,但pyflakes不警告你了。 请参阅__import__文档 。

 try: import json except ImportError: __import__('django.utils', globals(), locals(), ['json'], -1) 

我用一些awk魔法创build了一个awk帮助我。 有了这一切的import typingfrom typing import#$ (后面是一个特殊的评论,我在这里使用)被排除在外( $1是Python脚本的文件名):

 result=$(pyflakes -- "$1" 2>&1) # check whether there is any output if [ "$result" ]; then # lines to exclude excl=$(awk 'BEGIN { ORS="" } /(#\$)|(import +typing)|(from +typing +import )/ { print sep NR; sep="|" }' "$1") # exclude lines if there are any (otherwise we get invalid regex) [ "$excl" ] && result=$(awk "! /^[^:]+:(${excl}):/" <<< "$result") fi # now echo "$result" or such ... 

基本上它注意到行号,并dynamic地创build一个正则expression式。