メインコンテンツ

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

polyspaceCodeProver

Polyspace Code Prover 検証を MATLAB から実行

スクリプト化を容易にするには、polyspace.Project オブジェクトを使用して Polyspace® 解析を実行します。

説明

polyspaceCodeProver は、Polyspace Code Prover™ を開きます。

status = polyspaceCodeProver(projectFile) は、Polyspace プロジェクト ファイルを Polyspace Code Prover で開きます。

status = polyspaceCodeProver(optsObject) では、Polyspace オプション オブジェクトに対して、MATLAB® で検証が実行されます。

メモ

Polyspace オプション オブジェクトを使用して解析を実行する場合、解析のオプションの指定には Polyspace オプション オブジェクトのみを使用します。1 番目の引数が Polyspace オプション オブジェクトの場合、名前と値の引数の使用はサポートされていません。

status = polyspaceCodeProver(projectFile, '-nodesktop') では、Polyspace プロジェクト ファイルに対して、MATLAB で検証が実行されます。モジュールまたは構成が複数ある場合、Polyspace では、アクティブな構成とアクティブなモジュールが実行されます。アクティブなモジュールや構成を確認するには、Polyspace インターフェイスでプロジェクトを開き、選択状態の太字のモジュールや構成を確認します。アクティブなモジュールまたは構成を変更するには、Polyspace インターフェイスを閉じる前に、検証するモジュールや構成を選択します。

status = polyspaceCodeProver(resultsFile) は、Polyspace の結果ファイルを Polyspace Code Prover で開きます。

status = polyspaceCodeProver('-results-dir',resultsFolder) は、resultsFolder の Polyspace の結果ファイルを Polyspace Code Prover で開きます。

status = polyspaceCodeProver('-help') は、Polyspace Code Prover 検証を実行するために polyspaceCodeProver コマンドに指定できるすべてのオプションを表示します。

status = polyspaceCodeProver('-sources',sourceFiles) は、sourceFiles で指定されたソース ファイルで Polyspace Code Prover 検証を実行します。

polyspaceCodeProver('-sources',sourceFiles,Name,Value) は、1 つ以上の Name,Value ペア引数で指定される追加オプションを使用して、Polyspace Code Prover 検証をソース ファイルに対して実行します。

メモ

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

[status, jobID] = polyspaceCodeProver(___,'-batch','-scheduler',scheduler) は、解析の負荷をリモート クラスターに移します。ここで、scheduler は、複数のクライアントからの解析の送信を管理する、クラスターのヘッド ノードを示します。クラスター内の 2 つのジョブを操作も参照してください。

MATLAB から Polyspace プロジェクトを開く

この例では、拡張子 .psprj をもつ Polyspace プロジェクト ファイルを MATLAB から開く方法を示します。この例では、プロジェクト ファイル Code_Prover_Example.psprj を開きます。

プロジェクト ファイルへの絶対パスを MATLAB 変数 prjFile に代入します。

prjFile = fullfile(polyspaceroot, 'polyspace', 'examples', 'cxx', ...
         'Code_Prover_Example', 'Code_Prover_Example.psprj');

プロジェクトを開きます。

polyspaceCodeProver(prjFile)

MATLAB から Polyspace の結果を開く

この例では、Polyspace の結果ファイルを MATLAB から開く方法を示します。この例では、結果ファイルをフォルダー polyspaceroot\polyspace\examples\cxx\Code_Prover_Example\Module_1\CP_Result から開きます。

フォルダーの絶対パスを MATLAB 変数 resFolder に代入します。

resFolder = fullfile(polyspaceroot, 'polyspace', 'examples', ...
       'cxx', 'Code_Prover_Example', 'Module_1', 'CP_Result');

結果を開きます。

polyspaceCodeProver('-results-dir',resFolder)

オプション オブジェクトを使用した Polyspace 検証の実行

この例では、オブジェクトを使用して MATLAB で Polyspace 検証を実行する方法を示します。

オプション オブジェクトを作成し、ソース ファイルとインクルード フォルダーをプロパティに追加します。

opts = polyspace.Options;
opts.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
opts.EnvironmentSettings.IncludeFolders = {fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources')};
opts.ResultsDir = fullfile(pwd,'results');

検証を実行し、結果を表示します。

polyspaceCodeProver(opts);
polyspaceCodeProver('-results-dir',opts.ResultsDir)

DOS/UNIX のオプションを使用した MATLAB からの Polyspace 検証の実行

この例では、DOS/UNIX スタイルのオプションを使用して MATLAB で Polyspace 検証を実行する方法を示します。

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

sourceFiles = fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c');
includeFolders = fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources');
resultsDir = fullfile(pwd,'results');
polyspaceCodeProver('-sources',sourceFiles, ...
             '-I',includeFolders, ...
             '-results-dir',resultsDir,...
             '-main-generator');
polyspaceCodeProver('-results-dir',resultsDir);

コーディング ルールのチェックを伴う Polyspace 検証を実行

この例では、MATLAB で検証をカスタマイズする 2 つの異なる方法を示します。オプション オブジェクトのプロパティを変更するか、名前と値のペアを使用することで、追加オプションをいくつでもカスタマイズできます。MISRA C™ 2012 コーディング ルールのチェックからヘッダーを除外して、コーディング ルールのチェックを指定し、main を生成します。

ソース ファイル パス用の変数を作成する場合、いずれかの解析手法で使用するフォルダーのパスと結果フォルダーのパスを含めます。

sourceFileName = fullfile(polyspaceroot, 'polyspace','examples', 'cxx', 'Code_Prover_Example','sources','example.c');
includeFileName = fullfile(polyspaceroot, 'polyspace','examples', 'cxx', 'Code_Prover_Example','sources','include.h');
resFolder1 = fullfile('Polyspace_Results_1');
resFolder2 = fullfile('Polyspace_Results_2');

オプション オブジェクトを使用してコーディング ルールを検証します。

opts = polyspace.Options('C');
opts.Sources = {sourceFileName};
opts.EnvironmentSettings.IncludeFolders = {includeFileName};
opts.ResultsDir = resFolder1;
opts.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory';
opts.CodingRulesCodeMetrics.EnableMisraC3 = true;
opts.CodeProverVerification.EnableMain = true;
opts.InputsStubbing.DoNotGenerateResultsFor = 'all-headers';
polyspaceCodeProver(opts);
polyspaceCodeProver('-results-dir',resFolder1);

DOS/UNIX のオプションを使用してコーディング ルールを検証します。

polyspaceCodeProver('-sources',sourceFileName,...
     '-I',includeFileName, ...
     '-results-dir',resFolder2,...
     '-misra3','mandatory',...
     '-do-not-generate-results-for','all-headers',...
     '-main-generator');
polyspaceCodeProver('-results-dir',resFolder2);

入力引数

すべて折りたたむ

Polyspace オプション オブジェクト名をオブジェクト ハンドルとして指定します。

オプション オブジェクトを作成するには、Polyspace オプションのクラス polyspace.Options または polyspace.ModelLinkOptions を使用します。

例: opts

拡張子 .psprj のプロジェクト ファイル名を文字ベクトルとして指定します。

ファイルが現在のフォルダーに存在しない場合、projectFile は絶対パスまたは相対パスを含んでいなければなりません。現在のフォルダーを特定するには、pwd を使用します。現在のフォルダーを変更するには、cd を使用します。

例: 'C:\Polyspace_Projects\myProject.psprj'

文字ベクトルとして指定され、拡張子 .pscp をもつ結果ファイル名。

ファイルが現在のフォルダーに存在しない場合、resultsFile は絶対パスまたは相対パスを含んでいなければなりません。

例: 'myResults.pscp'

結果フォルダー名を文字ベクトルとして指定します。フォルダーには拡張子 .pscp をもつ結果ファイルがなければなりません。結果ファイルが指定されたフォルダーのサブフォルダーにある場合、このコマンドでは結果ファイルは開かれません。

ファイルが現在のフォルダーに存在しない場合、resultsFolder は絶対パスまたは相対パスを含んでいなければなりません。

例: 'C:\Polyspace\Results\'

拡張子 .c または .cpp をもつソース ファイルの、コンマで区切られた名前。単一文字ベクトルとして指定します。

ファイルが現在のフォルダーに存在しない場合、sourceFiles は絶対パスまたは相対パスを含んでいなければなりません。

例: 'myFile.c', 'C:\mySources\myFile1.c,C:\mySources\myFile2.c'

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: '-target','i386','-compiler','gnu4.6' は、ソース コードが i386 プロセッサを対象とし、GCC 4.6 コンパイラの非 ANSI C 構文を含んでいることを指定します。

すべての解析オプションのリストは、すべての Polyspace Code Prover 解析オプションのリストを参照してください。

出力引数

すべて折りたたむ

Code Provider 検証がエラーなしで完了した場合、statusfalse になります。それ以外の場合は、true です。

検証の失敗には次を含む複数の理由が考えられます。

  • 存在しないソース ファイル、プロジェクト ファイル、または結果ファイルを指定した。

  • 無効なパスを指定した。

  • ファイルのいずれかがコンパイルされなかった。

Polyspace の解析の負荷をリモート クラスターに移す場合、このコマンドは、リモート クラスターに対して送信された解析に関連付けられたジョブの ID を返します。この ID を使用して、ジョブを管理したり、ジョブが完了した後に解析結果をダウンロードしたりできます。polyspaceJobsManagerも参照してください。

バージョン履歴

R2013b で導入