我已经多次看到以下模式:
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.