初期化する変数 (-main-generator-writes-variables)
生成された main により初期化するグローバル変数の指定
説明
このオプションは Code Prover 解析のみに影響します。
このオプションは、MATLAB® コードまたは Simulink® モデルから生成されたコードでは使用できません。
生成された main で初期化するグローバル変数を指定します。Polyspace® では、それらの変数が型に応じた任意の値をもつと見なします。
オプションの設定
以下のいずれかの方法を使用してオプションを設定します。
Polyspace ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [Code Prover 検証] ノードを選択してから、このオプションの値を選択します。
Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [静的解析] タブで [実行時エラー] ノードを選択してから、このオプションの値を選択します。最初に有効にしなければならない他のオプションについては、依存関係を参照してください。
コマンド ラインとオプション ファイル: オプション
-main-generator-writes-variablesを使用します。コマンド ライン情報を参照してください。
このオプションを使用する理由
モジュールまたはライブラリを検証している場合、main 関数が存在しないと、Code Prover によって生成されます。main 関数が存在する場合、解析では既存の main が使用されます。
関数 main のないモジュールの Code Prover 解析では、グローバル変数の初期化について、既定の仮定が行われます。解析では、明示的に初期化されないグローバル変数のそれぞれは、呼び出されない関数に入るたびに、そのデータ型で許容される全範囲の値を取るものと仮定されます。たとえば、関数 main がない以下の例では、変数 glob は (foo での変更にもかかわらず) foo と bar の両方で考えられる "すべて" の int 値を取るものと仮定されます。どちらの関数が先に呼び出されるのかを含め、foo と bar の呼び出しのコンテキストは不明であるため、この仮定は保守的なものです。
int glob;
int foo() {
int locFoo = glob;
glob++;
return locFoo;
}
int bar() {
int locBar = glob;
return locBar;
}main の生成では、このようなグローバル変数を全範囲の値に初期化してから、変数が初期化されなければ呼び出されない各関数を呼び出します。この既定の仮定を変更して、グローバル変数の別の初期化手法を実装するには、このオプションを使用します。設定
既定値: public
uninit生成された
mainは、宣言時に初期化されなかったグローバル変数のみを初期化します。none生成された
mainはグローバル変数を初期化しません。グローバル変数は、C/C+ 規格に従って初期化されます。たとえば、変数
intまたはcharは 0 に初期化され、変数floatは 0.0 に初期化されるといった具合です。public生成された
mainは、キーワードstaticおよびconstで宣言された変数を除くグローバル変数をすべて初期化します。all生成された
mainは、キーワードconstで宣言された変数を除くグローバル変数をすべて初期化します。custom生成された
mainは、指定されたグローバル変数のみを初期化します。
をクリックしてフィールドを追加します。グローバル変数名を入力します。
依存関係
オプション [モジュールまたはライブラリの検証] (-main-generator) (Polyspace Code Prover) が選択されている場合にのみ、このオプションを使用できます。
次の場合、このオプションは無視されます。
コードに
main関数が含まれている場合。オプション
[グローバル変数の既定の初期化を無視する] (-no-def-init-glob)を有効にした場合。グローバル変数は、コード内で明示的に初期化しない限り、未初期化と見なされます。
ヒント
このオプションは、プロジェクトで定義されているグローバル変数にのみ影響します。グローバル変数が extern として宣言されている場合、解析では、このオプションの値に関係なく、その変数がそのデータ型によって許容される任意の値を取る可能性があることが考慮されます。
コマンド ライン情報
パラメーター: -main-generator-writes-variables |
値: uninit | none | public | all | custom= |
既定値: public |
例 (Code Prover): polyspace-code-prover -sources |
例 (Code Prover Server): polyspace-code-prover-server -sources |
バージョン履歴
参考
モジュールまたはライブラリの検証 (-main-generator)
トピック
- Polyspace 解析オプションの指定
- main 関数のない C アプリケーションの検証 (Polyspace Code Prover)