簡體   English   中英

如何使靜態代碼分析意識到異常拋出功能?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM