如何让静态代码分析知道异常抛出函数?

How to make static code analysis aware of an Exception throwing function?

出于可读性和可重用性的原因,我有一个 总是 调用时引发特定异常的函数。但是,静态代码分析似乎没有考虑到这一点,即我收到了不必要的警告。有没有什么好的方法可以避免这些警告,例如,通过让静态代码分析意识到这个函数总是会引发异常这一事实?

最小工作示例:

def raise_an_exception():
    raise Exception("...description...")


def foo(arg):
    if arg:
        x = 1
    else:
        raise_an_exception()
    # causes warning "Local variable 'x' might be referenced before assignment":
    return x + 1


def bar(arg):
    if arg:
        x = 1
    else:
        raise Exception("...description...")
    # causes no warning:
    return x + 1

边界条件:我不想在if语句之前在foo()中声明x或设置x else 代码块中的任何值,或任何其他类似的解决方法。在 bar() 中没有必要,在 foo() 中也没有必要。

对于不能正常 return 的函数有一个 NoReturn 注释:

from typing import NoReturn

def raise_an_exception() -> NoReturn:
    raise Exception("...description...")

理解类型注释的静态分析工具应该理解这一点并且不会报告 foo 的错误。