メインコンテンツ

MATLAB スクリプトによる Polyspace 解析結果の Excel へのエクスポート

Bug Finder 解析または Code Prover 解析の結果を Excel® レポートにエクスポートすることができます。Polyspace 解析結果のエクスポートを参照してください。そのレポートには、タブで区切られたテキスト ファイルの Polyspace® の結果が事前定義されたコンテンツと書式設定を使用して表示されます。

独自のコンテンツと書式設定を使用して Excel レポートを作成することもできます。MATLAB® スクリプトを使用してこのレポートの作成を自動化します。

1 つのワークシートにおける結果の概要と詳細のレポート

この例では、Polyspace の結果から Excel レポートを生成するサンプル スクリプトを示します。

このスクリプトは 2 つのワークシートを Excel ブックに追加します。ワークシートでは、polyspaceroot\polyspace\examples\cxx\Code_Prover_Example\Module_1\CP_result にある Polyspace の結果の内容が報告されます。ここで、polyspacerootC:\Program Files\Polyspace\R2019a のような Polyspace インストール フォルダーです。

各ワークシートには、Polyspace の結果の特定のタイプについての概要と詳細が含まれます。

  • MISRA C:2012:このワークシートには、Polyspace の結果における MISRA C®:2012 ルール違反の概要が含まれます。概要の後には、各 MISRA C:2012 違反の詳細が続きます。

  • RTE:このワークシートには、Code Prover により検出されたランタイム エラーの概要が含まれます。概要の後には、各ランタイム エラーの詳細が続きます。

% Copy a demo result set to a temporary folder.
resPath = fullfile(polyspaceroot,'polyspace','examples','cxx', ...
    'Code_Prover_Example','Module_1','CP_Result');  
userResPath = tempname;
copyfile(resPath,userResPath);
 
% Read results into a table.
results = polyspace.CodeProverResults(userResPath);
resultsTable = results.getResults;

% Delete any existing file and create new file
filename = 'polyspace.xlsx';
if isfile(filename) 
    delete(filename)
end

% Disable warnings about adding new worksheets
warning('off','MATLAB:xlswrite:AddSheet')

% Write MISRA summary to the MISRA 2012 worksheet
misraSummaryTable = results.getSummary('misraC2012');
writetable(misraSummaryTable, filename, 'Sheet', 'MISRA 2012');

% Write MISRA results to the MISRA 2012 worksheet
misraDetailsTable = resultsTable(resultsTable.Family == 'MISRA C:2012',:);
detailsStartingCell = strcat('A',num2str(height(misraSummaryTable)+ 4)); 
writetable(misraDetailsTable, filename, 'Sheet', 'MISRA 2012', 'Range', ...
detailsStartingCell);

% Write runtime summary to the RTE worksheet
rteSummaryTable = results.getSummary('runtime');
writetable(rteSummaryTable, filename, 'Sheet', 'RTE');

% Write runtime results to the RTE worksheet
rteResultsTable = resultsTable(resultsTable.Family == 'Run-time Check',:);
detailsStartingCell = strcat('A',num2str(height(rteSummaryTable)+ 4));
writetable(rteResultsTable, filename, 'Sheet', 'RTE', 'Range', detailsStartingCell);

この例で使用されている重要な関数は以下の関数です。

  • polyspace.CodeProverResults:Code Prover の結果を table に読み取る。

  • writetable:MATLAB table をファイルに書き込む。ファイル名の拡張子が .xslx である場合、関数は Excel ファイルに書き込みます。

    Excel シートに書き込むコンテンツを指定するには、以下のように名前と値のペアを使用します。

    • シート名とペアになる名前 Sheet を使用して、Excel ブックのワークシートを指定する。

    • セル名とペアになる名前 Range を使用して、ワークシート内で書き込みを始める開始セルを指定する。

Excel レポートの書式設定の制御

上述の方法を使用して Excel レポートにエクスポートされるコンテンツを制御することはできますが、この方法ではレポート用の書式オプションに制限があります。

Windows® システムで Excel レポートを書式設定するには、actxserver を使用して COM サーバーに直接アクセスします。たとえば、技術的な解決法 1-QLD4K では、actxserver を使用して MATLAB と Excel 間の接続を確立し、データをワークシートに書き込み、セルの色を指定しています。

COM 入門も参照してください。

参考

トピック