可以检查分支的python linter / static checker

时间:2012-09-19 07:11:37

标签: python

我特别担心:

由于分支执行导致未初始化的值:我知道在Java中存在variable a might not have been initialized时存在可能导致变量不能初始化的控制流。

返回值魔术:根据分支,该方法可能会返回一个值,或者无意中返回任何内容,因为分支不会返回。

是否有工具可以检查分支是否正确?我知道它需要一个静态类型语言才能做到这一点,但它是否与Python相当?

1 个答案:

答案 0 :(得分:0)

通常的嫌疑人(PyChecker,pylint,pyflakes)都没有处理“未初始化的分支”案例或您提到的“返回值”案例。

我在这段代码上测试了所有内容:

x = 1

def foo():
    if False:
        y = 1
    print y     # not defined!

def bar():
    if x == 1:
        return True
    # fall off end

pyflakes和PyChecker报告没有问题,并且pylint报告了一堆愚蠢的东西(缺少文档字符串,不喜欢我的任何变量名......)。

我认为这两种情况都值得在静态语法检查工具中实现。我不认为它们在计算上计算成本会很高,或者造成很多误报。但是,可能有一些分支总是被合理的语法检查程序占用但是不可判定(例如,如果你有代码检查至少存在1000个素数,如果是这样,则分支定义y)。