メインコンテンツ

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

polyspace.Project

C および C++ に対する Polyspace 解析の実行と結果の読み取り

説明

この MATLAB® オブジェクトを使用して、C および C++ ソース ファイルに対して Polyspace® 解析を実行します。ソース ファイルを指定して解析オプションをカスタマイズするには、Configuration プロパティを使用します。解析を実行するには、run メソッドを使用します。解析後に結果を読み取るには、Results プロパティを使用します。

メモ

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

作成

proj = polyspace.Project は、Polyspace 解析の構成、実行、および解析結果の読み取りに使用できるオブジェクトを作成します。

プロパティ

すべて展開する

Polyspace 解析を実行するためのオプション。polyspace.Options オブジェクトとして実装します。オブジェクトには、解析オプションに対応するプロパティがあります。これらのプロパティの詳細については、polyspace.Project.Configuration のプロパティ を参照してください。

既定のオプションは、そのままにしておくことも、以下のいずれかの方法で変更することもできます。

  • ソース コードの言語を 'C'、'CPP'、または 'C-CPP' (既定の設定) に設定します。オブジェクトの言語設定によっては、いくつかの解析オプションを使用できない場合もあります。

    proj=polyspace.Project;
    proj.Configuration=polyspace.Options('C');

  • プロパティを直接変更する。

    proj = polyspace.Project;
    proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
  • 他の polyspace.Project オブジェクトからオプションを取得する。

    proj1 = polyspace.Project;
    proj1.Configuration.TargetCompiler.Compiler = 'gnu4.9';
    
    proj2 = proj1;
    

    複数のプロジェクトで共通の解析オプションを使用するには、この方法に従います。たとえば、すべてのオプションを再利用して、ソース ファイルだけ変更する場合です。

  • Polyspace デスクトップ製品のユーザー インターフェイスで作成したプロジェクト (.psprj ファイル) からオプションを取得する。

    proj = polyspace.Project;
    projectLocation = fullfile(polyspaceroot, 'polyspace', ... 
        'examples', 'cxx', 'Bug_Finder_Example', 'Bug_Finder_Example.psprj')
    proj.Configuration = polyspace.loadProject(projectLocation);

    最適なオプションのセットを決定するには、ユーザー インターフェイスでオプションを設定した後、オプションを polyspace.Project オブジェクトにインポートします。ユーザー インターフェイスで、オプションに関するツールヒント ヘルプを表示できます。

  • Simulink® モデルからオプションを取得する (Polyspace デスクトップ製品にのみ適用)。オプションを取得する前に、モデルからコードを生成する。

    modelName = 'model';
    load_system(modelName);
    
    % 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');
    % Generate code
    slbuild(modelName);
    
    % Obtain configuration from model
    proj = polyspace.Project;
    proj.Configuration = polyspace.ModelLinkOptions(modelName);
    

    オプション使用して、モデルから生成されたコードを解析します。

Polyspace 解析の結果。polyspace.Project オブジェクトを作成すると、このプロパティは最初は空です。このオブジェクトの run メソッドを実行してはじめて、このプロパティが入力されます。run メソッドの引数 ('bugFinder' または 'codeProver') に応じて、プロパティが polyspace.BugFinderResults オブジェクトまたは polyspace.CodeProverResults オブジェクトとして実装されます。

結果を読み取るには、polyspace.BugFinderResults または polyspace.CodeProverResults オブジェクトの以下のメソッドを使用します。

  • getSummary:概要形式の結果を MATLAB table に取得します。

    proj = polyspace.Project;
    proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
        'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
    proj.Configuration.ResultsDir = fullfile(pwd,'results');
    
    run(proj, 'bugFinder');
    
    resObj = proj.Results;
    resTable = getSummary(resObj, 'defects');

    詳細は、getSummary を参照してください。

  • getResults:完全な結果または読みやすい形式の結果を MATLAB table に取得します。

    proj = polyspace.Project;
    proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
        'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
    proj.Configuration.ResultsDir = fullfile(pwd,'results');
    
    run(proj, 'bugFinder');
    
    resObj = proj.Results;
    resTable = getResults(resObj, 'readable');

    詳細は、getResultsを参照してください。

オブジェクト関数

runPolyspace 解析の実行

すべて折りたたむ

例のファイル numerical.cPolyspace Bug Finder™ 解析を実行します。以下のオプションを構成します。

  • コンパイラとして GCC 4.9 を指定します。

  • 結果を現在の作業フォルダーの results サブフォルダーに保存します。

proj = polyspace.Project

% Configure analysis
proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')};
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.ResultsDir = fullfile(pwd,'results');

% Run analysis
bfStatus = run(proj, 'bugFinder');

% Read results
resObj = proj.Results;
bfSummary = getSummary(resObj, 'defects');

例のファイル single_file_analysis.cPolyspace Code Prover™ 解析を実行します。以下のオプションを構成します。

  • コンパイラとして GCC 4.9 を指定します。

  • 結果を現在の作業フォルダーの results サブフォルダーに保存します。

  • ソース コードに main 関数が存在しない場合は、関数を生成する必要があることを指定します。

proj = polyspace.Project

% Configure analysis
proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.ResultsDir = fullfile(pwd,'results');
proj.Configuration.CodeProverVerification.MainGenerator = true;


% Run analysis
cpStatus = run(proj, 'codeProver');

% Read results
resObj = proj.Results;
cpSummary = getSummary(resObj, 'runtime');

例のファイル single_file_analysis.cPolyspace Bug Finder 解析を実行します。以下のオプションを構成します。

  • コンパイラとして GCC 4.9 を指定します。

  • 結果を現在の作業フォルダーの results サブフォルダーに保存します。

  • MISRA C™:2012 ルールのチェックを有効にします。必須ルールのみチェックします。

proj = polyspace.Project

% Configure analysis
proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')};
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.ResultsDir = fullfile(pwd,'results');
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true;
proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory';

% Run analysis
bfStatus = run(proj, 'bugFinder');

% Read results
resObj = proj.Results;
defectsSummary = getSummary(resObj, 'defects');
misraSummary = getSummary(resObj, 'codingStandards');

バージョン履歴

R2017b で導入