После Polyspace® анализ, можно считать результаты в MATLAB® таблица. Используя таблицу, можно сгенерировать графики или статистику о результатах. Если у вас есть MATLAB Report Generator, можно включить эти таблицы и графики в PDF или HTML.
Чтобы считать существующие результаты анализа Polyspace в таблицу MATLAB, используйте polyspace.BugFinderResults
объект, сопоставленный с результатами.
Например, чтобы считать результаты демонстрации в подпапке только для чтения polyspace/examples/cxx/Bug_Finder_Example/Module_1/BF_Result
из установочной папки MATLAB скопируйте результаты в папку с возможностью записи и прочитайте их:
resPath = fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'Module_1','BF_Result'); userResPath = tempname; copyfile(resPath,userResPath); resObj = polyspace.BugFinderResults(userResPath); resSummary = getSummary(resObj); resTable = getResults(resObj);
resSummary
и resTable
являются двумя таблицами MATLAB, содержащими сводные данные и подробную информацию о результатах Polyspace.Также можно запустить анализ Polyspace на исходных файлах C/C + + с помощью polyspace.Project
(Polyspace Code Prover) объект. После анализа, 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', ... 'Bug_Finder_Example','Module_1','BF_Result'); userResPath = tempname; copyfile(resPath,userResPath); % Read results into a table. resObj = polyspace.BugFinderResults(userResPath); resTable = getResults(resObj); % Eliminate results that are not defects. matches = (resTable.Family == 'Defect'); defectTable = resTable(matches ,:); % Create a pie chart showing distribution of defects. defectGroupList = removecats(defectTable.Group); pieDefects = pie(defectGroupList); labels = get(pieDefects(2:2:end),'String'); set(pieDefects(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,'Bug Finder Defect Distribution Graph')); paragraphText = ['The following graph shows the distribution of ' ... 'defects 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,'Defect Details')); paragraphText = ['The following table shows the defects ' ... 'in your code.']; append(report, Paragraph(paragraphText)); % Add the table of defects to the report. reducedInfoTable = defectTable(:,{'File','Function','Check',... '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.BugFinderResults
: Прочитайте результаты Bug Finder в таблицу.
pie
: Создайте круговую диаграмму из категориального массива. Можно также использовать функцию histogram
или heatmap
.
Чтобы создать гистограммы, замените pie
с histogram
в скрипте и удалите легенды круговых диаграмм.
mlreportgen.dom.Document
(MATLAB Report Generator): создайте объект отчета, который задает формат отчета и место хранения отчета.
append
(MATLAB Report Generator): Добавить содержимое к существующему отчету.
Когда вы выполняете скрипт, вы видите распределение дефектов по группам дефектов. Скрипт также создает HTML, содержащий график и таблицу дефектов Polyspace.
Можно использовать любой критерий для удаления строк из таблицы результатов перед составлением отчетов. В предыдущем примере используются критерии, что результат должен быть из семейства дефектов. Смотрите также семейства результатов Bug Finder.
matches = (resTable.Family == 'Defect');
defectTable = resTable(matches ,:);
Вместо этого можно использовать другой критерий. Например, можно удалить результаты в файлах заголовков и сохранить результаты только из исходных файлов.
sourceExtensions = [".c",".cpp",".cxx"]; fileNameStrings = string(resTable.File); matches = endsWith(fileNameStrings,sourceExtensions); sourceTable = resTable(matches ,:);