メインコンテンツ

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

呼び出す関数 (-main-generator-calls)

生成された main により初期化関数の後に呼び出す関数の指定

説明

このオプションは Code Prover 解析のみに影響します。

このオプションは、MATLAB® コードまたは Simulink® モデルから生成されたコードでは使用できません。

生成された main が呼び出す関数を指定します。main は、オプション [初期化関数] (-functions-called-before-main) で指定された関数の後で、これらの関数を呼び出します。

オプションの設定

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

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

  • Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [静的解析] タブで [実行時エラー] ノードを選択してから、このオプションの値を選択します。最初に有効にしなければならない他のオプションについては、依存関係を参照してください。

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

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

モジュールまたはライブラリを検証している場合、main 関数が存在しないと、Code Prover によって生成されます。main 関数が存在する場合、解析では既存の main が使用されます。

このオプションとオプション [初期化関数] (-functions-called-before-main) を同時に使用して、生成された main が呼び出さなければならない関数を指定します。main から直接または間接的に呼び出される場合を除いて、本ソフトウェアはその関数を解析しません。

設定

既定値: unused

none

生成された main はどの関数も呼び出しません。

unused

生成された main は、ソース コード内で呼び出されていない関数のみを呼び出します。インライン化された関数は呼び出しません。

all

生成された main は、インライン化された関数を除くすべての関数を呼び出します。

custom

生成された main は、指定された関数を呼び出します。

関数名を入力するか、一覧から選択します。

  • add field icon をクリックしてフィールドを追加し、関数名を入力します。

  • list code function icon をクリックして、コード内の関数の一覧を表示します。その一覧から関数を選択します。

スコープ解決演算子を使用して特定の名前空間の関数を指定する場合は、myClass::myMethod(int) などの完全修飾名を入力します。関数にパラメーターがない場合、myClass::myMethod() のように空のかっこを使用します。

依存関係

オプション [モジュールまたはライブラリの検証] (-main-generator) が選択されている場合にのみ、このオプションを使用できます。

コードに main 関数が含まれている場合、このオプションは無視されます。

ヒント

  • [Code Prover 検証][ファイルを個別に検証] を選択する場合、[unused] を選択します。

  • インライン化された関数を生成された main で呼び出すには、[custom] を選択し、関数名を指定します。

  • main なしでマルチタスク アプリケーションを検証するには、none を選択します。

  • 生成された main は、関数を任意の順序で呼び出すことができます。関数を特定の順序で呼び出すには、呼び出し用に main 関数を手作業で作成します。

  • テンプレートのインスタンスを引数として指定するには、オプションの引数 [all] を使用して一度解析を実行します。解析ログ内でテンプレート名を検索し、解析ログに表示されているテンプレート名をオプションの引数として使用します。

    たとえば、次のテンプレート関数のインスタンス化をオプションの引数として指定するには、以下のようにします。

    template <class T>
    T GetMax (T a, T b) {
      T result;
      result = (a>b)? a : b;
      return (result);
    } 
    template int GetMax<int>(int, int); // explicit instantiation
    
    オプション -main-generator-calls all を使用して解析を実行します。解析ログで getMax を検索します。次のような関数形式が見つかります。
    T1 getMax<int>(T1, T1)
    このテンプレートのインスタンスのみを呼び出すには、引数間のスペースを削除して、次のオプションを使用します。
    -main-generator-calls custom="T1 getMax<int>(T1,T1)"

コマンド ライン情報

パラメーター: -main-generator-calls
値: none | unused | all | custom=function1[,function2[,...]]
既定値: unused
例 (Code Prover): polyspace-code-prover -sources file_name -main-generator -main-generator-calls all
例 (Code Prover Server): polyspace-code-prover-server -sources file_name -main-generator -main-generator-calls all