メインコンテンツ

pslinkrun

モデル、システムまたは S-Function での Polyspace 解析の実行

説明

pslinkrun は、Embedded Coder® および MATLAB® Coder を使用してモデルまたはサブシステムから生成されたコードの Polyspace® 解析を実行します。

[polyspaceFolder, resultsFolder] = pslinkrun は、現在のシステムに関連付けられている構成オプションを使用して現在のシステムから生成されたコードを解析します。結果フォルダーの場所を返します。現在のシステムはコマンド bdroot (Simulink) で返されるシステムです。

[polyspaceFolder, resultsFolder]= pslinkrun(target) は、target を含むモデルに関連付けられている構成オプションを使用して target を解析します。解析を実行する前に、以下を完了しなければなりません。

  • モデルとサブシステムのコードの生成。

  • S-Function のコンパイル。

[polyspaceFolder, resultsFolder] = pslinkrun('-slcc',target) は、モデル内の C Caller ブロックと Stateflow チャートに含まれる C/C++ カスタム コードで Polyspace を実行します。

[polyspaceFolder, resultsFolder] = pslinkrun(target, opts) は、オブジェクト opts で指定された構成オプションを使用して target を解析します。結果フォルダーの場所を返します。

[polyspaceFolder, resultsFolder] = pslinkrun('-slcc', target, opts) は、モデル内の C Caller ブロックと Stateflow チャートに含まれる C/C++ カスタム コードで Polyspace を実行します。この解析では、オブジェクト opts で指定された構成オプションを使用します。

[polyspaceFolder, resultsFolder] = pslinkrun(target, opts, asModelRef)asModelRef を使用して解析対象の生成コードのタイプ (スタンドアロン コードまたはモデル参照コード) を指定します。このオプションは、モデル参照として生成されたコードを解析する場合に役に立ちます。モデル参照として生成されたコードは、他のモデルまたはコードで呼び出されるか、使用されることが想定されています。

[polyspaceFolder, resultsFolder] = pslinkrun('-codegenfolder', MATLABCoderGenFolder, opts) は、MATLAB コードから生成されて MATLABCoderGenFolder に格納された C/C++ コードに対して Polyspace を実行します。

メモ

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

すべて折りたたむ

Simulink® モデルを使用してコードを生成し、構成オプションを設定した後、コマンド ラインから解析を実行します。

% Generate code from the model WhereAreTheErrors.
model = 'WhereAreTheErrors';
load_system(model);
slbuild(model);

% Create a Polyspace options object from the model. 
opts = pslinkoptions(model);

% Set properties that define the Polyspace analysis.
opts.VerificationMode = 'CodeProver';
opts.VerificationSettings = 'PrjConfigAndMisraC2012';

% Run Polyspace using the options object.
[polyspaceFolder, resultsFolder] = pslinkrun(model,opts);
bdclose(model);

結果と対応する Polyspace プロジェクトは results_WhereAreTheErrors フォルダーに保存され、polyspaceFolder 変数にリストされます。結果フォルダーへの絶対パスは、resultsFolder 変数内にあります。

Simulink モデルを使用してモデル参照コードを生成し、構成オプションを設定した後、コマンド ラインから解析を実行します。

% Generate code from the model WhereAreTheErrors.
% Treat WhereAreTheErrors as if referenced by another model.
model = 'WhereAreTheErrors';
load_system(model);
slbuild(model,'ModelReferenceCoderTarget');

% Create a Polyspace options object from the model. 
opts = pslinkoptions(model);

% Set properties that define the Polyspace analysis.
opts.VerificationMode = 'CodeProver';
opts.VerificationSettings = 'PrjConfigAndMisraC2012';

% Run Polyspace with the options object.
[polyspaceFolder, resultsFolder] = pslinkrun(model,opts,true);
bdclose(model);

結果と対応する Polyspace プロジェクトは results_mr_WhereAreTheErrors フォルダーに保存され、polyspaceFolder 変数にリストされます。結果フォルダーへの絶対パスは、resultsFolder 変数内にあります。

この例では、複数のモデルの Polyspace 解析でオプションのサブセットを再利用する方法を示します。汎用オプション オブジェクトを作成して、共通のオプションを記述するプロパティを指定します。汎用オプション オブジェクトをモデル固有のオプション オブジェクトに関連付けます。必要に応じて、モデル固有のオプションをいくつか設定して、Polyspace 解析を実行します。

% Generate code from the model WhereAreTheErrors.
model = 'psdemo_model_link_sl';
load_system(model);
slbuild(model);

% Create a generic options object to use for multiple model analyses.
opts = polyspace.ModelLinkOptions();
opts.CodingRulesCodeMetrics.EnableMisraC3 = true;
opts.CodingRulesCodeMetrics.MisraC3Subset = 'all';
opts.MergedReporting.ReportOutputFormat = 'PDF';
opts.MergedReporting.EnableReportGeneration = true;

% Create a model-specific options object.
mlopts = pslinkoptions(model);

% Create a project from the generic options object.
% Associate the project with the model-specific options object. 
prjfile = opts.generateProject('model_link_opts');
mlopts.EnablePrjConfigFile = true;
mlopts.PrjConfigFile = prjfile;
mlopts.VerificationMode = 'BugFinder';

% Run Polyspace with the model-specific options object.
[polyspaceFolder, resultsFolder] = pslinkrun(model,mlopts);
bdclose(model);

解析終了後、Polyspace インターフェイスで結果が自動的に開く。

この例では、MATLAB コードから生成された C/C++ コードを解析する方法を示します。

% Generate code
matlabFileName = fullfile(polyspaceroot, 'polyspace',...
    'examples','doc_cxx','matlab_coder','averaging_filter.m');
codegenFolder = fullfile(pwd, 'codegenFolder');
codegen(matlabFileName, '-config:lib', '-c', '-args', ...
   {zeros(1,100,'double')}, '-d', codegenFolder);

% Configure Polyspace analysis
opts = pslinkoptions('ec');
opts.ResultDir = [tempdir 'results'];
opts.OpenProjectManager = 1;

% Run Polyspace
[polyspaceFolder, resultsFolder] = pslinkrun('-codegenfolder', codegenFolder, opts);

解析終了後、Polyspace インターフェイスで結果が自動的に開く。

入力引数

すべて折りたたむ

解析のターゲットは、モデル、システムまたは S-Function を一重引用符で囲んだ文字ベクトルとして指定します。既定値は bdroot (Simulink) で返されるシステムです。

C Caller ブロックと Stateflow チャート内のカスタム コードを pslinkrun('-slcc',...) を使用して解析する場合、引数 target を S-Function ブロックとすることはできません。

例: [polyspaceFolder, resultsFolder] = pslinkrun('demo')。ここで demo はモデルの名前です。

例: [polyspaceFolder, resultsFolder] = pslinkrun('path/to/sfunction')

データ型: char

Polyspace のオプション オブジェクトとして指定された、target の構成オプションを指定します。このようなオプション オブジェクトは、関数 pslinkoptions によって作成されます。pslinkoption プロパティを変更することでオプション オブジェクトをカスタマイズできます。

例: pslinkrun('demo', opts_demo)。ここで demo はモデルの名前で、opts_demo はオプション オブジェクトです。

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

  • asModelRef が false (既定) の場合は、Polyspace が生成されたコードをスタンドアロン コードとして解析します。このオプションは、Simulink Polyspace オプションで [次を対象とした生成コードの検証][モデル] を選択するのと同等です。

  • asModelRef が true の場合は、Polyspace が生成されたコードをモデル参照コードとして解析します。このオプションは、Simulink Polyspace オプションで [次を対象とした生成コードの検証][参照モデル] を選択するのと同等です。モデル参照コードを指定すると、Polyspace ではスタンドアロン コードの場所とは異なる場所にある生成されたコードを調査しなければならないことを示します。

データ型: logical

MATLAB コードから生成された C/C++ コードを含むフォルダー。文字ベクトルとして指定します。codegen コマンドで、-d フラグを使用してこのフォルダーを指定します。

出力引数

すべて折りたたむ

Polyspace プロジェクトと結果を含むフォルダーの名前を文字ベクトルとして指定します。この変数の既定値は results_$ModelName$ です。

この値を変更する場合は、出力フォルダーを参照してください。

Polyspace 結果を含むサブフォルダーへの絶対パスを文字ベクトルとして指定します。

フォルダー results_$ModelName$ には、Polyspace プロジェクトと解析結果を含むサブフォルダー $ModelName$ が含まれます。この変数はこのサブフォルダーへの絶対パスを提供します。このパスは、polyspace.BugFinderResults オブジェクトまたは polyspace.CodeProverResults オブジェクトと一緒に使用できます。

親フォルダー results_$ModelName$ を変更する場合は、出力フォルダーを参照してください。

バージョン履歴

R2012a で導入