Lint 以检查缺少的 `raise` 关键字

问题描述 投票:0回答:0

我已经多次看到以下模式:

if value > MAX_VALUE:
    ApplicationError("value is too large")

# value is in range now
use_value(value)

这里有一个明显但相对容易遗漏的错误:

raise
关键字从
ApplicationError
中丢失。构造了一个异常对象但没有引发,并且无效的
value
继续到函数的其余部分。

我们使用 flake8、pyright 和一组精选的 pylint lints。我的期望是某种静态分析工具会发现这个问题:

  • 通过检测我正在创建异常实例而不是引发它,
  • 或者(更简单)我正在创建一个类的实例,但不存储结果(这可以用于副作用,但它绝对是一个反模式,对吧?)
  • 或(最一般的)有一个未使用结果的函数调用

最后一个选项似乎是 mypy/pyright 应该能够捕捉到的东西,至少,但我完全找不到any sort linter for this.

python static-analysis pylint
© www.soinside.com 2019 - 2024. All rights reserved.