我如何让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 typing
, from 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式。