代码之家  ›  专栏  ›  技术社区  ›  Tobias Hermann

pylint和“赋值前引用”

  •  1
  • Tobias Hermann  · 技术社区  · 6 年前

    对于以下代码

    在未定义变量上测试pylint 随机进口 DEF主体(): “”“使用未定义的变量”“” 如果随机,randint(0,10)==6: 东西=“嗨” 打印(事物) 如果“名称”= 主体() < /代码>

    Pycharm正确地报告了问题。

    pylint (2.0.0,python 3.6.6)但是不识别它:.

    Your code has been rated at 10.00/10(previous run:10.00/10,+0.00)
    < /代码> 
    
    

    但我希望能找到它,以便让我的CI在这些情况下失败。

    所以实际上我有两个问题:

    • 是否可以选择启用pylintto enable,以便找到此类错误?
    • Pycharm默认使用的是什么线头?(我一直认为它是pylintunder the hood.)。

    Pycharm正确地报告了问题。

    enter image description here

    pylint (2.0.0,python 3.6.6)但是不能识别它:

    Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)
    

    但我希望能找到它,以便让我的CI在这些情况下失败。

    所以实际上我有两个问题:

    • 有选择吗 皮林特 为了使它能找到这种错误?
    • Pycharm默认使用的是什么线头?(我一直认为 皮林特 在引擎盖下面。)
    1 回复  |  直到 6 年前
        1
  •  1
  •   Michael Miller    6 年前

    是否有一个选项让pylint启用,以便它可以找到这种错误?

    pylint当前无法检测条件或控制流块中可能未定义的变量。未来版本的pylint可能能够识别这些错误。在你提出问题的时候,有一个开放的问题 add support for recognizing possible undefined variables 在控制流块内部,如您的示例。

    pylint确实可以识别在使用之前绝对未定义的变量,如本例中所示。

    print(x)
    x = "Hello, world"
    

    或者这个

    print(y)
    if random.randint(0,10) == 3:
        y = "ok"
    

    Pycharm默认使用的是什么线头?(我一直以为是引擎盖下的皮林特。)

    Pycharm默认使用自己的内部检查库。PyTracle在Java中实现,它的检查库也是如此。

    可以将pylint与pycharm一起使用,但它不是内置的或默认使用的。显示了将pylint配置为外部工具的解决方案 here 还有一个 Pylint plugin for PyCharm 可用。