以前のリリースの Simulink を使用して生成されたコードに対する Polyspace の実行
今までの Simulink® リリースを変更せずに、新しいリリースの Polyspace® を使用できます。MATLAB および Simulink のさまざまなリリースについての Polyspace でのサポートを参照してください。
このようなリリース間構成では、Embedded Coder® を使用して生成されたコードに対する Polyspace 解析を、関数 pslinkrunCrossRelease
を使用して実行します。同じリリースの Polyspace と Simulink を使用する場合は、Simulink モデルから生成されたコードに対する Polyspace 解析の実行を参照してください。
前提条件
異なるリリースの MATLAB® または Simulink の Polyspace 解析を開始するときには、次の条件があります。
Polyspace のリリースは Simulink のリリースよりも新しくなければなりません。
Simulink のリリースは R2020b 以降でなければなりません。
Polyspace を Simulink と統合しなければなりません。MATLAB や Simulink との Polyspace の統合を参照してください。
このリリース間構成では、Simulink モデル内のカスタム コードの解析をサポートしていません。
リリース間 Polyspace 解析の実行
以前のリリースの Simulink を使用して生成されたコードの Polyspace 解析を実行するには、Simulink モデルからコード アーカイブを生成してから関数 pslinkrunCrossRelease
を呼び出します。モデル構成を変更するには、pslinkoptions
オブジェクトを作成してカスタマイズします。変更可能な構成オプションのリストについては、pslinkrunCrossRelease
を参照してください。Polyspace 解析オプションを適用するにはオプション ファイルを使用します。
Simulink モデル
polyspace_controller_demo
を開いて、コードを生成するためのモデルを構成します。Polyspace 解析で推奨されるモデル コンフィギュレーション パラメーターを参照してください。cd(matlabroot); model = 'polyspace_controller_demo'; openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample',... 'supportingFile',model); mkdir TempDir; load_system(model); cd TempDir; % Configure the model configSet = getActiveConfigSet(model); set_param(configSet,'Solver','FixedStepDiscrete'); set_param(configSet, 'SystemTargetFile', 'ert.tlc');
リリース間解析を行うには、生成されたコードをコード アーカイブにパッケージ化する必要があります。オプション
PackageGeneratedCodeAndArtifacts
をtrue
に設定します。set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
モデルからコードを生成する。
slbuild(model);
Polyspace 解析のモデル構成を指定するには、
pslinkoptions
オブジェクトを使用します。Polyspace Bug Finder™ 解析を実行するには、psOpt.VerificationMode
を'BugFinder'
に設定します。あるいは、% Create a Polyspace options object from the model. psOpts = pslinkoptions(model); % Set properties that define the Polyspace analysis. psOpts.VerificationMode = 'BugFinder';
psOpt.VerificationMode
を'CodeProver'
に設定して、Polyspace Code Prover™ 解析を実行します。Polyspace 解析オプションを指定するには、オプション ファイルを作成します。オプション ファイルは、Polyspace の各オプションを 1 行に入れたフラット リストを含むテキスト ファイルです。たとえば、Polyspace Bug Finder チェッカーと CERT C コーディング ルールを有効にするには、該当するオプションを含むテキスト ファイルを現在のフォルダー内に作成します。
すべての Polyspace Code Prover 解析オプションのリストを参照してください。% Create Options file optFile = 'Options.txt'; fid = fopen(optFile,'wt'); option1 = '-checkers all'; option2 = '-cert-c all'; fprintf(fid, '%s\n%s', option1, option2); fclose(fid);
Polyspace 解析を開始します。
Polyspace 解析実行のためのモデル構成を指定するには、
pslinkrunCrossRelease
のオプションの 2 番目の引数としてオブジェクトpsOpt
を設定します。コードはスタンドアロン コードとして生成されるので、3 番目の引数
asModelRef
をfalse
に設定します。Polyspace 解析オプションを指定するには、作成したオプション ファイルへの相対パスを 4 番目の引数として指定します。
MATLAB コマンド ウィンドウで解析の進行状況を確認します。% Locate options file in the current folder optionsPath = fullfile(pwd,optFile); % Run Polyspace analysis [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath); bdclose(model);
結果のレビュー
リリース間ワークフローで polyspaceBugFinder
、polyspaceCodeProver
などの関数の直接呼び出しはできません。結果を開くには、関数 pslinkfun
を使用します。
Polyspace ユーザー インターフェイスで結果を開くには、関数
pslinkfun
を使用します。文字ベクトルresultsFolder
に、結果フォルダーへの絶対パスが含まれています。pslinkfun('openresults', '-resultsfolder',resultsFolder);
結果は Polyspace Access にアップロードできます。結果を Polyspace Access にアップロードを参照してください。
結果をレビューし、特定された問題を修正するか、または正当化します。詳細については、Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処を参照してください。
参考
pslinkrunCrossRelease
| polyspacePackNGo
| slbuild
(Simulink) | packNGo
(Embedded Coder) | pslinkfun