私は大部分のC言語で書かれた大きなコードベースをいくつかの列挙型で持っています。最近、私は列挙型のうちの1つを修正しましたが、それは多少の影響を「誤って」予測したため、大きな影響をもたらしました。コードが変更されたために導入されているバグを静的に検出する方法はありますか?
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)
そして、いくつかのように見えた私のコードでありアサートされた: - 私たちは常にin_value < ENUM_VAL_MAX
を期待して、新しい列挙型の変更で、asserts
とし、
if (in_val < ENUM_VAL_MAX)
それに応じて条件を修正すべきであったが、これらのうちのいくつかが欠落し、そのために問題が生じた場合。
私の質問は、これらの種類のバグを識別するための最良の方法は何ですか?コード差分を見て、その影響を分析するスタティックアナライザーツールはありますか?例えば、この場合、(コードを静的に解析することにより)これらの条件に私を向ける可能性のあるツールがあり、警告が出ますか?私はHelgrindを見ましたが、それは助けに見えません。