getSummary
結果タイプ (Bug Finder) または色とファイル (Code Prover) で整理された Polyspace の結果の数を表示する
コーディング ルール違反を要約するには、'codingStandards'
を resultsType
として使用します (R2024b 以降)。詳細は、バージョン履歴を参照してください。
説明
は、Polyspace® 結果セット resSummary
= getSummary(resObj
, resultsType
)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.c
に Polyspace 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.c
に Polyspace 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 欠陥の概要の表示を選択した場合は、テーブルの抜粋が次のように表示されます。
カテゴリ 欠陥 影響度 合計 同時実行 データ レース High 2 同時実行 Deadlock High 1 データ フロー 未初期化変数 High 2 上のテーブルは、結果セットに 2 つのデータ レース、1 つのデッドロック、2 つの未初期化変数が含まれていることを示しています。
Code Prover 実行時チェックの概要の表示を選択した場合は、テーブルの抜粋が次のように表示されます。
ファイル 証明済み グリーン レッド グレー オレンジ file1.c
92.0% 87 3 2 8 file2.c
97.7% 41 0 1 1 上のテーブルから、
file1.c
には以下があることがわかります。3 個のレッド チェック、2 個のグレー チェックおよび 8 個のオレンジ チェック。
演算の 92% が証明済み。
つまり、検証でチェックされた 100 個の演算のうち、92 個の演算がグリーン、レッドまたはグレーであることが証明されました。Code Prover の結果とソース コードの色を参照してください。
コーディング規約違反の要約を表示することを選択した場合、
resSummary
はテーブルの配列となり、各テーブルが 1 つのコーディング規約の結果を表します。配列内の各テーブルに、ルールに対する違反の数と説明が表示されます。
MATLAB table の詳細については、tableを参照してください。
バージョン履歴
R2017a で導入入力引数 resultsType
の次の値は推奨されなくなりました。
エントリ | 意味 |
---|---|
'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 ガイドライン チェッカー |
コーディング ルール違反を要約するには、代わりに値 codingStandards
を使用します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)