メインコンテンツ

以前のリリースの 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 解析オプションを適用するにはオプション ファイルを使用します。

  1. 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');

  2. リリース間解析を行うには、生成されたコードをコード アーカイブにパッケージ化する必要があります。オプション PackageGeneratedCodeAndArtifactstrue に設定します。

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. モデルからコードを生成する。

    slbuild(model);
    

  4. 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™ 解析を実行します。

  5. Polyspace 解析オプションを指定するには、オプション ファイルを作成します。オプション ファイルは、Polyspace の各オプションを 1 行に入れたフラット リストを含むテキスト ファイルです。たとえば、Polyspace Bug Finder チェッカーと CERT C コーディング ルールを有効にするには、該当するオプションを含むテキスト ファイルを現在のフォルダー内に作成します。

    % 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 Code Prover 解析オプションのリストを参照してください。

  6. Polyspace 解析を開始します。

    • Polyspace 解析実行のためのモデル構成を指定するには、pslinkrunCrossRelease のオプションの 2 番目の引数としてオブジェクト psOpt を設定します。

    • コードはスタンドアロン コードとして生成されるので、3 番目の引数 asModelReffalse に設定します。

    • Polyspace 解析オプションを指定するには、作成したオプション ファイルへの相対パスを 4 番目の引数として指定します。

    %  Locate options file in the current folder
    optionsPath = fullfile(pwd,optFile);
    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath);
    bdclose(model);
    
    MATLAB コマンド ウィンドウで解析の進行状況を確認します。

結果のレビュー

リリース間ワークフローで polyspaceBugFinderpolyspaceCodeProver などの関数の直接呼び出しはできません。結果を開くには、関数 pslinkfun を使用します。

  1. Polyspace ユーザー インターフェイスで結果を開くには、関数 pslinkfun を使用します。文字ベクトル resultsFolder に、結果フォルダーへの絶対パスが含まれています。

    pslinkfun('openresults', '-resultsfolder',resultsFolder);

    結果は Polyspace Access にアップロードできます。結果を Polyspace Access にアップロードを参照してください。

  2. 結果をレビューし、特定された問題を修正するか、または正当化します。詳細については、Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処を参照してください。

参考

| | (Simulink) | (Embedded Coder) |

トピック