メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

グローバル変数の既定の初期化を無視する (-no-def-init-glob)

グローバル変数がコード内で明示的に初期化されていない場合、未初期化と見なす

説明

このオプションは Code Prover にのみ適用されます。Bug Finder 解析には影響しません。

グローバル変数および静的変数がコード内で明示的に初期化されていない場合、Polyspace® では、それらの変数を初期化されていると見なさないことを指定します。

オプションの設定

以下のいずれかの方法を使用してオプションを設定します。

  • Polyspace ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [入力およびスタブ] ノードを選択してから、このオプションの値を選択します。

  • Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [静的解析] タブで [入力およびスタブ] ノードを選択してから、このオプションの値を選択します。

  • コマンド ラインとオプション ファイル: オプション -no-def-init-glob を使用します。コマンド ライン情報を参照してください。

このオプションを使用する理由

C99 規格は、グローバル変数が暗黙的に初期化されることを指定しています。既定の解析ではこの規格に従い、暗黙的な初期化を考慮します。

特定のグローバル変数を明示的に初期化する場合は、このオプションを使用して、グローバル変数が明示的に初期化されていないインスタンスを特定します。

設定

オン

Polyspace は、グローバル変数および静的変数の暗黙的な初期化を無視します。コードがグローバル変数または静的変数を読み取ってから書き込みをする場合、検証によって [未初期化変数] のレッド エラーが生成されます。

このオプションを有効にすると、コード内で明示的に初期化されていないグローバル変数は、未初期化と見なされます。このオプションはオプション [初期化する変数] (-main-generator-writes-variables) をオーバーライドすることに注意してください。生成された main を使用して変数を初期化する場合でも、このオプションにより、解析ではその初期化が強制的に無視されます。

オフ (既定の設定)

Polyspace は、グローバル変数および静的変数が C99 または ISO® C++ 規格に従って初期化されるものと想定します。たとえば、既定値は次のとおりです。

  • int では 0

  • char では 0

  • float では 0.0

ヒント

  • このオプションは、グローバル変数に加え static ローカル変数に適用されます。static として宣言されたローカル変数は、可視性は定義された関数だけに制限されますが、有効期間はグローバル変数と同じです。

  • このオプションは変数 extern には適用されません。変数 extern は、Polyspace 解析の範囲外で宣言されて初期化される可能性があるので、変数 extern の初期化ステータスを完全に決定することはできません。

コマンド ライン情報

パラメーター: -no-def-init-glob
既定値: オフ
例 (Code Prover): polyspace-code-prover -sources file_name -no-def-init-glob
例 (Code Prover Server): polyspace-code-prover-server -sources file_name -no-def-init-glob