[英]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()
也沒有必要。
對於無法正常返回的函數,有一個NoReturn
注釋:
from typing import NoReturn
def raise_an_exception() -> NoReturn:
raise Exception("...description...")
理解類型注釋的靜態分析工具應該理解這一點,並且不要報告foo
錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.