我有一個用C語言編寫的大型代碼庫,有幾個枚舉。最近我修改了其中的一個枚舉,並且產生了重大影響,因爲我有點「錯誤」 - 評估了影響。 有看起來像這樣的枚舉: -如何靜態檢測由於代碼更改而引入的錯誤?
typedef enum en_e_type
{
ENUM_VAL_1 = 1,
ENUM_VAL_2 = 2,
ENUM_VAL_3 = 3,
ENUM_VAL_MAX = 4,
}en_e;
這得到了改變,以
typedef enum en_e_type
{
ENUM_VAL_1 = 1,
ENUM_VAL_2 = 2,
ENUM_VAL_3 = 3,
ENUM_VAL_MAX = ENUM_VAL_3 ,
}en_e;
我們可以看出,ENUM_VAL_MAX
價值得到了修改。 有一些聲稱在我的代碼看起來像這樣
ASSERT (in_value < ENUM_VAL_MAX)
還有一些,如果這樣的情況: -
if (in_val < ENUM_VAL_MAX)
我們總是與新枚舉變化預期in_value < ENUM_VAL_MAX
的asserts
和如果條件應該相應地修改,但其中一些錯過了,因此也是問題。
我的問題是,識別這類錯誤的最好方法是什麼?是否有一些靜態分析工具查看代碼差異並相應地分析其影響?例如。在這種情況下,是否有一種工具可能會指向這些if/assert
條件(通過靜態解析代碼)併發出一些警告?我看着Helgrind,但似乎沒有幫助。