このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
初期化コードでグローバル変数に値が割り当てられていません
プログラムの初期化セクションでグローバル変数に値が割り当てられていない
説明
このチェックでは、宣言時、または初期化コードとして指定されたコードのセクションで、すべての非 const グローバル変数 (およびローカルの静的変数) に値が明示的に割り当てられているかどうかを判別します。
初期化コードの最後を示すには、次の行を入力します。
#pragma polyspace_end_of_init
main
関数に入力します。初期化コードは main
の先頭から始まり、このプラグマまで継続します。このチェックを有効にするには、オプション [ウォーム リブート後にグローバル変数が初期化されることをチェック] (-check-globals-init)
を使用します。グローバル変数に対するチェックは、次のようになります。
変数が宣言時に明示的に初期化されず、初期化コードでも初期化されない (または初期化コード内のデッド コードで初期化される) 場合は、レッドになります。
変数が初期化コードの特定の実行パスで初期化されない場合は、オレンジになります。たとえば、変数が条件付きステートメントの
if
分岐では初期化されるが、else
分岐では初期化されない場合などです。初期化コードが実行を完了した後、変数が常に初期化されている場合は、グリーンになります。
ウォーム リブートでは、時間短縮のため、プログラムのデータ セグメント (以前の状態の変数値を保持している可能性がある領域) が読み込まれません。代わりに、プログラムが実行前にすべての非 const 変数を明示的に初期化することが想定されています。このチェックは、すべての非 const グローバル変数がウォーム リブートで実際に初期化されることを検証します。
このチェックの診断
[変数アクセス] ペイン (または Polyspace® Access Web インターフェイスの [グローバル変数] ペイン) で、初期化されていない変数または初期化されない可能性がある変数のすべてのインスタンスを参照します。プラグマ polyspace_end_of_init
が検出される前に参照が行われているかどうかを確認します。
Polyspace デスクトップ ユーザー インターフェイスの [変数アクセス]も参照してください。
例
チェック情報
グループ: データ フロー |
言語: C |
頭字語: GLOBAL_SET_AT_INITIALIZATION |