Экспорт результатов анализа Polyspace в Excel с помощью скриптов MATLAB

Можно экспортировать результаты анализа Bug Finder или Code Prover в Excel® отчет. См. раздел Экспорт результатов анализа Polyspace. Отчет содержит Polyspace® результаты получается текстовый файл с разделителями табуляции с предопределенным содержимым и форматированием.

Можно также создавать отчеты Excel с собственным содержимым и форматированием. Автоматизируйте создание этого отчета с помощью MATLAB® скрипты.

Сводные данные результатов отчета и подробные сведения в одном листе

В этом примере показан пример скрипта для генерации отчетов Excel из результатов Polyspace.

Скрипт добавляет два листа в книгу Excel. Содержимое отчетов о листах из результатов Polyspace в polyspaceroot\ polyspace\examples\cxx\Code _ Prover _ Example\Module _ 1\CP _ результат. Здесь, polyspaceroot - папка установки Polyspace, например C:\Program Files\Polyspace\R2019a.

Каждый лист содержит сводные данные и детали для определенного типа результата Polyspace:

  • MISRA C:2012: Этот лист содержит сводные данные MISRA C®: 2012 нарушение правил в результатах Polyspace. Далее приводятся подробные данные о каждом нарушении 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 (Polyspace Code Prover): Чтение результатов Code Prover в таблицу.

  • writetable: Запись таблицы MATLAB в файл. Если имя файла имеет расширение .xslxфункция записывает данные в файл Excel.

    Чтобы указать содержимое для записи на лист Excel, используйте следующие пары "имя-значение":

    • Используйте имя Sheet в паре с именем листа для задания листа в книге Excel.

    • Используйте имя Range в паре с именем камеры для задания начальной камеры в листе, с которого начинается запись.

Управление форматированием отчета Excel

Хотя можно управлять содержимым, экспортированным в отчет Excel с помощью предыдущего метода, метод имеет ограниченные опции форматирования для отчета.

Форматирование отчета Excel в Windows® системы, доступ к COM-серверу непосредственно при помощи actxserver. Для примера Technical Решения 1-QLD4K использует actxserver чтобы установить соединение между MATLAB ® и Excel, запишите данные в лист и укажите цвета камер.

См. также раздел «Начало работы с COM».

Похожие темы