メインコンテンツ

getSummary

結果タイプ (Bug Finder) または色とファイル (Code Prover) で整理された Polyspace の結果の数を表示する

コーディング ルール違反を要約するには、'codingStandards'resultsType として使用します (R2024b 以降)。詳細は、バージョン履歴を参照してください。

説明

resSummary = getSummary(resObj, resultsType) は、Polyspace® 結果セット resObj でタイプ resultsType の結果の分布を返します。結果セット resObj は、polyspace.BugFinderResults オブジェクトで示される Bug Finder の結果セットにすることも、polyspace.CodeProverResults オブジェクトで示される Code Prover の結果セットにすることもできます。

次に例を示します。

  • Bug Finder 欠陥の表示を選択した場合は、未初期化変数や宣言不一致の数など、結果セット内に存在する各タイプの欠陥の数がわかります。

  • Code Prover 実行時チェックの表示を選択した場合は、各ファイルに含まれる、レッド、オレンジ、グレー、およびグリーンのチェック数がわかります。

  • コーディング規約違反を表示することを選択した場合は、サポートされているコーディング規約に対する違反が表示されます。

すべて折りたたむ

この例では、MATLAB® から Bug Finder の解析結果を読み取る方法を示します。

デモの結果セットを一時フォルダーにコピーします。

resPath=fullfile(polyspaceroot,'polyspace','examples','cxx','Bug_Finder_Example', ...
'Module_1','BF_Result');
userResPath = tempname;
copyfile(resPath,userResPath);

結果オブジェクトを作成します。

resObj = polyspace.BugFinderResults(userResPath);

このオブジェクトを使用して結果を MATLAB table に読み取ります。

resSummary = getSummary(resObj, 'defects');
resTable = getResults(resObj);

デモ ファイル numerical.c で、サポートされているコーディング規約に対する違反をチェックします。以下のオプションを構成します。

  • コンパイラとして 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');

デモ ファイル numerical.cPolyspace Bug Finder™ 解析を実行します。

numerical.c ファイルを一時的な場所にコピーします。

proj = polyspace.Project;

% Configure analysis
proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')};

コンパイラとして GCC 4.9 を指定し、結果をサブフォルダー results に保存します。

proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.ResultsDir = fullfile(pwd,'results');

必要に応じて、Bug Finder 欠陥を無効にします。

proj.Configuration.BugFinderAnalysis.EnableCheckers = 0;

MISRA C™:2023 および CERT® C コーディング規約を有効にします。

% Configure coding standards
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC2023 = true;
proj.Configuration.CodingRulesCodeMetrics.MisraC2023 = 'all';
proj.Configuration.CodingRulesCodeMetrics.EnableCertC = true;
proj.Configuration.CodingRulesCodeMetrics.CertC = 'all';

解析を実行してから、結果を読み取ります。

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

% Read results
resObj = proj.Results;

コーディング規約違反を要約します。

bfSummary = getSummary(resObj, 'codingStandard');

オブジェクト bfSummary は 2 要素の cell 配列です。一方の要素は MISRA C:2023 に対する違反を記載するテーブル、もう一方の要素は CERT C に対する違反を記載するテーブルです。

この例では、MATLAB から Code Prover の解析結果を読み取る方法を示します。

デモの結果セットを一時フォルダーにコピーします。

resPath = fullfile(polyspaceroot,'polyspace','examples','cxx','Code_Prover_Example', ...
'Module_1','CP_Result');
userResPath = tempname;
copyfile(resPath,userResPath);

結果オブジェクトを作成します。

resObj = polyspace.CodeProverResults(userResPath);

このオブジェクトを使用して結果を MATLAB table に読み取ります。

resSummary = getSummary(resObj, 'runtime');
resTable = getResults(resObj);

デモ ファイル 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 = getResults(resObj, 'readable');

入力引数

すべて折りたたむ

それぞれ、polyspace.BugFinderResults オブジェクトまたは polyspace.CodeProverResults オブジェクトとして指定された Bug Finder または Code Prover の結果セット。

結果のタイプ。文字ベクトルとして指定します。Bug Finder 結果セットの既定は 'defects' で、Code Prover 結果セットの既定は 'runtime' です。

エントリ意味
'defects'Bug Finder 欠陥
'runtime'ランタイム エラーの Code Prover チェック
'metrics'コード複雑度メトリクス
'codingStandards'すべてのコーディング規約。サポートされているコーディング規約のリストについては、コーディング規約を参照してください。
'misraC'MISRA C:2004 ルール
'misraCAGC'生成されたコード用 MISRA C:2004 ルール
'misraCPP'MISRA™ C++ ルール
'misraC2012'MISRA C:2012 ルール
'jsf'JSF® C++ ルール
'certC'CERT C ルール
'certCpp'CERT C++ ルール
'iso17961'ISO®/IEC TS 17961 ルール
'autosarCPP14'AUTOSAR C++ 14 ルール
'metrics'コード複雑度メトリクス
'customRules'識別子の命名規則への準拠を設定するカスタム ルール
'guidelines'Polyspace ガイドライン チェッカー

出力引数

すべて折りたたむ

テーブルとして指定される結果の分布。次に例を示します。

  • Bug Finder 欠陥の概要の表示を選択した場合は、テーブルの抜粋が次のように表示されます。

    カテゴリ欠陥影響度合計
    同時実行データ レースHigh2
    同時実行DeadlockHigh 1
    データ フロー未初期化変数High 2

    上のテーブルは、結果セットに 2 つのデータ レース、1 つのデッドロック、2 つの未初期化変数が含まれていることを示しています。

  • Code Prover 実行時チェックの概要の表示を選択した場合は、テーブルの抜粋が次のように表示されます。

    ファイル証明済みグリーンレッドグレーオレンジ
    file1.c92.0%87328
    file2.c97.7%41011

    上のテーブルから、file1.c には以下があることがわかります。

    • 3 個のレッド チェック、2 個のグレー チェックおよび 8 個のオレンジ チェック。

    • 演算の 92% が証明済み。

      つまり、検証でチェックされた 100 個の演算のうち、92 個の演算がグリーン、レッドまたはグレーであることが証明されました。Code Prover の結果とソース コードの色を参照してください。

  • コーディング規約違反の要約を表示することを選択した場合、resSummary はテーブルの配列となり、各テーブルが 1 つのコーディング規約の結果を表します。配列内の各テーブルに、ルールに対する違反の数と説明が表示されます。

MATLAB table の詳細については、tableを参照してください。

バージョン履歴

R2017a で導入

すべて展開する