0

假设我有以下代码:

def incr(d, a)
    r = {}
    for key, value in d.items():
        if key != a:
            value += 1
        r[key] = value
    return r
def decr(d, a)
    r = {}
    for key, value in d.items():
        if key == a:
            value -= 1
        r[key] = value
    retur r

可以看出,它:在两个定义中都没有出现,并且还包含retur而不是return最后一行。但是,如果我通过 pyflakes(类似pyflakes test.py)运行它,它只会报告所有错误中的第一个:

$ pyflakes test.py
test.py:9:15: invalid syntax
def incr(d, a)
              ^

一旦我修复了第一个,它就会在第二次运行时移动到下一个:

$ pyflakes test.py
test.py:18:15: invalid syntax
def decr(d, a)
              ^

所以,我的问题是我是否遗漏了什么,或者是否可以一次显示所有可能的错误?

(事实上​​,我正在尝试使用 vim 的syntastic插件——但由于上述行为,syntastic 本身仅显示 vim 位置列表中的第一个错误......)

谢谢。

4

1 回答 1

3

Pyflakes 不打算检查语法错误。它是一种用于检查违反编码标准的错误的工具,这些错误可能未被检测到,因为代码仍然可以运行。例如,未使用的导入或变量。

语法错误是由 python 解释器引发的,而不是 pyflakes 库。

于 2016-02-19T18:24:28.083 回答