メインコンテンツ

polyspace.ModelLinkOptions クラス

名前空間: polyspace

生成されたコードに対して Polyspace 解析を実行するためのプロジェクト構成オブジェクトの作成

説明

プロジェクト構成オブジェクトを使用することによって MATLAB® から Polyspace® 解析を実行します。ソース ファイルを指定して解析オプションをカスタマイズするには、このオブジェクトのプロパティを変更します。

このクラスは、モデル生成コードを対象とします。手書きコードを解析している場合は、代わりに polyspace.Options を使用します。

メモ

MATLAB から Polyspace を実行する前に、Polyspace インストールと MATLAB インストールをリンクしなければなりません。MATLAB や Simulink との Polyspace の統合を参照してください。

構築

psprjConfig = polyspace.ModelLinkOptions は、生成されたコードに対して Polyspace 解析を実行するように構成されたプロジェクト構成オブジェクトを作成します。

psprjConfig = polyspace.ModelLinkOptions(lang) は、言語 lang で生成されたコードに対して解析を実行するように構成されたプロジェクト構成オブジェクトを作成します。

psprjConfig = polyspace.ModelLinkOptions(model) は、Simulink® モデル model に固有の情報を使用することによって構成されたプロジェクト構成オブジェクトを作成します。model からオプションを抽出する前に、モデルを読み込んでそこからコードを生成する必要があります。

psprjConfig = polyspace.ModelLinkOptions(model, psOpt) は、psOpt で指定された Polyspace 解析オプションを使用することによって構成されたモデル固有のプロジェクト構成オブジェクトを作成します。

psprjConfig = polyspace.ModelLinkOptions(model, psOpt, asModelRef) は、asModelRef を使用して解析対象の生成されたコードのタイプ (スタンドアロン コードまたはモデル参照コード) を指定するプロジェクト構成オブジェクトを作成します。

入力引数

すべて展開する

解析の言語を、'C-CPP', 'C' または 'CPP' で指定します。この引数により、オブジェクトのプロパティが決まります。

モデルまたはサブシステムの名前またはパス。文字ベクトルとして指定します。

モデルからオプションを抽出する前に、以下を行わなければなりません。

  1. モデルを読み込む。load_system (Simulink) または open_system (Simulink) を使用します。

  2. モデルからコードを生成する。slbuild (Simulink) または slbuild (Simulink) を使用します。

例: 'psdemo_model_link_sl'

Polyspace 解析に使用するオプションを含むオブジェクト。これは、関数 pslinkoptions を呼び出すことによって作成します。オプション オブジェクトをカスタマイズするには、psOpt オブジェクトのプロパティを変更します。

例: psOpt = pslinkoptions(model)。ここで、model は Simulink モデルの名前です。

モデル参照解析のインジケーターであり、true または false で指定されます。

  • 他の場所で使用または呼び出される、生成されたコードを解析するには、フラグ asModelReftrue に設定します。このオプションは、Simulink ツールストリップの Polyspace タブで [次のコードの解析][モデル参照として生成されたコード] を選択することと同じです。

  • スタンドアロン コードとして使用するために生成されたコードを解析するには、フラグ asModelReffalse に設定します。このオプションは、Simulink ツールストリップの Polyspace タブで [次のコードの解析][最上位モデルとして生成されたコード] を選択することと同じです。

データ型: logical

プロパティ

オブジェクトのプロパティは、Polyspace プロジェクトの構成オプションに対応しています。このプロパティは、Polyspace インターフェイスと同じカテゴリで編成されます。プロパティ名は DOS コマンド ライン名の短縮バージョンです。構文の詳細は、polyspace.ModelLinkOptions のプロパティ を参照してください。

メソッド

copyToPolyspace オプション オブジェクト間での共通設定のコピー
generateProjectオプション オブジェクトから psprj プロジェクトを生成
toScriptスクリプトへの Polyspace オプション オブジェクト定義の追加

すべて折りたたむ

この例は、モデルから生成したコードに対してカスタマイズと解析を実行する方法を示します。

モデル polyspace_controller_demo からコードを生成します。コード生成の前に、コード解析に適したシステム ターゲット ファイルを設定します。Polyspace 解析で推奨されるモデル コンフィギュレーション パラメーターも参照してください。

cd(matlabroot);
modelName = 'polyspace_controller_demo';
openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
'supportingFile',modelName);
mkdir TempDir;
load_system(modelName);
cd TempDir;

% Set parameters for Embedded Coder target
set_param(modelName, 'SystemTargetFile', 'ert.tlc');
set_param(modelName,'Solver','FixedStepDiscrete');
set_param(modelName,'SupportContinuousTime','on');
set_param(modelName,'LaunchReport','off');
set_param(modelName,'InitFltsAndDblsToZero','on');

slbuild(modelName);

polyspace.ModelLinkOptions オブジェクトをモデルに関連付けます。オブジェクト プロパティのサブセットは、モデルに関連付けられたコンフィギュレーション パラメーターから設定されます。他のプロパティは既定値を取ります。コンフィギュレーション パラメーターの詳細は、Simulink での Bug Finder 解析を参照してください。

psprjCfg = polyspace.ModelLinkOptions(modelName);

必要に応じてプロパティ値を変更します。たとえば、解析ですべての MISRA C™:2012 違反をチェックして結果の PDF レポートを生成しなければならないことを指定できます。解析結果のフォルダーを指定することもできます。

psprjCfg.CodingRulesCodeMetrics.EnableMisraC3 = true;
psprjCfg.CodingRulesCodeMetrics.MisraC3Subset = 'all';
psprjCfg.MergedReporting.EnableReportGeneration = true;
psprjCfg.MergedReporting.ReportOutputFormat = 'PDF';
psprjCfg.ResultsDir = 'newResfolder';

polyspace.Project オブジェクトを作成します。このオブジェクトの Configuration プロパティを、以前指定したオプションに関連付けます。

proj = polyspace.Project;
proj.Configuration = psprjCfg;

必要に応じて、解析をリモート サーバーに送信して、解析のバッチをまとめて実行することもできます。解析をバッチ モードで設定するには、実行する解析に応じてプロパティ BatchBugFinder または BatchCodeProvertrue に設定します。その後、Polyspace 解析ジョブを管理するヘッド ノードを次のように指定します。

% Setup batch analysis
psprjCfg.MergedComputingSettings.BatchBugFinder = true; 
psprjCfg.Advanced.Additional = '-scheduler NodeID';

解析を実行して結果を開きます。

cpStatus = proj.run('codeProver');
proj.Results.getResults('readable');

この例では、別のモデルまたはコードで呼び出し可能なエンティティとして使用される生成されたコードの解析方法を示します。

Simulink モデル polyspace_controller_demo を読み込んで、それを Polyspace 解析用に設定します。詳細については、Polyspace 解析で推奨されるモデル コンフィギュレーション パラメーターを参照してください。

cd(matlabroot);
model = 'polyspace_controller_demo';
openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
'supportingFile',modelName);
mkdir TempDir;
load_system(model);
cd TempDir;;
% Configure the model for generating code
set_param(model, 'SystemTargetFile', 'ert.tlc');
set_param(model,'MatFileLogging','off');
set_param(model,'GenerateComments','on');
set_param(model,'Solver','FixedStepDiscrete');
set_param(model,'LaunchReport','off');

Simulink モデルからモデル参照としてコードを生成するには、slbuild (Simulink) を使用します。buildspec パラメーターを 'ModelReferenceCoderTarget' に設定します。

slbuild(model,'ModelReferenceCoderTarget');

生成されたコードの Polyspace 解析を設定するには、関数 pslinkoptions を使用することによってオプション オブジェクト psOpt を作成します。必要に応じて、オブジェクトのプロパティを変更します。たとえば、Code Prover 解析を実行するには、Verificationmode'CodeProver' に設定します。

psOpt = pslinkoptions(model);
psOpt.VerificationMode = 'CodeProver';

Polyspace 解析を実行するには、Polyspace プロジェクト構成オブジェクトを作成して設定します。

  • Polyspace プロジェクト構成オブジェクトを作成するには、関数 polyspace.ModelLinkOptions を使用します。

  • Polyspace 解析オプションにプロジェクト構成を関連付けるには、オブジェクト psOptpolyspace.ModelLinkOptions() の 2 番目の引数として設定します。

  • 生成されたコードをモデル参照として解析するように指定するには、3 番目の引数を 'true' として指定します。

次に例を示します。

psprjCfg = polyspace.ModelLinkOptions(model, psOpt,true);

Polyspace プロジェクトを構成するには、psprjCfg オブジェクトのプロパティを変更します。たとえば、必須の MISRA C:2012 ルール用のチェッカーを有効にして、結果の PDF レポートを生成するには、以下を使用します。

psprjCfg.CodingRulesCodeMetrics.EnableMisraC3 = true;
psprjCfg.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory-required';
psprjCfg.MergedReporting.EnableReportGeneration = true;
psprjCfg.MergedReporting.ReportOutputFormat = 'PDF';
便宜上、別の結果フォルダーを指定できます。
psprjCfg.ResultsDir = 'newResfolder';

polyspace.Project を使用することによって Polyspace プロジェクトを作成し、それにプロジェクト構成を関連付けます。

proj = polyspace.Project;
proj.Configuration = psprjCfg;

オブジェクト proj の関数 run を使用することによって、Polyspace 解析を開始します。

cpStatus = proj.run('codeProver');

PDF レポート生成を有効にしたため、Polyspace 解析の結果が newResfolder/Polyspace-Doc で見つかる PDF ファイルで報告されます。MATLAB table に結果を表示するには、以下を使用します。

result = proj.Results.getResults('readable');

代替方法

手書きコードを解析している場合は、polyspace.Project オブジェクトを直接使用します。あるいは、polyspace.Options オブジェクトを使用します。

バージョン履歴

R2017a で導入