Визуализируйте результаты анализа программы автоматического доказательства кода в MATLAB

После анализа можно считать результаты в таблицу MATLAB® (MATLAB). Используя таблицу, можно сгенерировать графики или статистику о результатах. Если у вас есть MATLAB Report Generator, можно включать эти таблицы и графики в PDF или отчете HTML.

Экспортируйте результаты в таблицу MATLAB

Чтобы считать существующие результаты анализа Polyspace® в таблицу MATLAB, используйте polyspace.CodeProverResults объект сопоставлен с результатами.

Например, считать демонстрацию приводит к подпапке polyspace/examples/cxx/Code_Prover_Example/Module_1/CP_Result только для чтения из папки установки MATLAB скопируйте результаты в перезаписываемую папку и считайте их:

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

userResPath = tempname;
copyfile(resPath,userResPath);

resObj = polyspace.CodeProverResults(userResPath);
resSummary = getSummary(resObj);
resTable = getResults(resObj);
resSummary и resTable две таблицы MATLAB, содержащие сводные данные и детали результатов Polyspace.

В качестве альтернативы можно запустить анализ Polyspace исходных файлов C/C++ с помощью polyspace.Project объект. После анализа, Results свойство объекта содержит результаты. Смотрите Анализ Polyspace Запуска при помощи Скриптов MATLAB.

Сгенерируйте графики от результатов и включайте в отчет

Можно визуализировать результаты анализа в таблице MATLAB в удобном формате. Если у вас есть MATLAB Report Generator, можно создать PDF или отчет HTML, который содержит визуализацию.

Этот пример создает круговую диаграмму, показывающую распределение красных, серых и оранжевых проверок на этапе выполнения типом проверки, и включает график в отчет.

%% This example shows how to create a pie chart from your results and append 
% it to a report.

%% Generate Pie Chart from Polyspace Results

% 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.
resObj = polyspace.CodeProverResults(userResPath);
resTable = getResults(resObj);
 
% Keep results that are run-time checks and eliminate green checks.
matches = (resTable.Family == 'Run-time Check') &...
    (resTable.Color  ~= 'Green');
checkTable = resTable(matches, :);
 
% Create a pie chart showing distribution of checks.
checkList = removecats(checkTable.Check);
pieChecks = pie(checkList);
labels = get(pieChecks(2:2:end),'String');
set(pieChecks(2:2:end),'String','');
legend(labels,'Location','bestoutside')

% Save the pie chart.
print('file','-dpng');


%% Append Pie Chart to Report 
% Requires MATLAB Report Generator

% Create a report object.
import mlreportgen.dom.*;
report = Document('PolyspaceReport','html');
 
% Add a heading and paragraph to the report.
append(report, Heading(1,'Code Prover Run-Time Errors Graph'));
paragraphText = ['The following graph shows the distribution of ' ...
               'run-time errors in your code.'];
append(report, Paragraph(paragraphText));

% Add the image to the report.
chartObj = Image('file.png');
append(report, chartObj);

% Add another heading and paragraph to the report.
append(report, Heading(1,'Code Prover Run-Time Errors Details'));
paragraphText = ['The following table shows the run-time errors ' ...
               'in your code.'];
append(report, Paragraph(paragraphText));
 
% Add the table of run-time errors to the report.
reducedInfoTable = checkTable(:,{'File','Function','Check','Color',...
    'Status','Severity','Comment'});
reducedInfoTable = sortrows(reducedInfoTable,[1 2]);
tableObj = MATLABTable(reducedInfoTable);
tableObj.Style = {Border('solid','black'),ColSep('solid','black'),...
    RowSep('solid','black')};
append(report, tableObj);
 
% Close and view the report in a browser.
close(report);
rptview(report.OutputPath);
Ключевые функции, используемые в примере:

  • polyspace.CodeProverResults: Считайте результаты Программы автоматического доказательства Кода в таблицу (MATLAB).

  • pie: Создайте круговую диаграмму из категориального массива (MATLAB). Можно альтернативно использовать функциональный histogram или heatmap.

    Чтобы создать гистограммы, замените pie с histogram в скрипте и удаляют легенды круговой диаграммы.

  • mlreportgen.dom.Document: Создайте объект отчета, который задает формат отчета и где сохранить отчет.

  • mlreportgen.dom.Document.append: Добавьте содержимое к существующему отчету.

Когда вы выполняете скрипт, вы видите, что распределение проверяет тип проверки. Скрипт также создает отчет HTML, который содержит график и таблицу проверок Polyspace.

Похожие темы