exponenta event banner

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

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

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

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

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

Сценарий добавляет два листа в книгу Excel. Результаты отчета по содержимому листов из Polyspace в polyspaceroot\polyspace\examples\cxx\Code_Prover_Example\Module_1\CP_result. Здесь, polyspaceroot является папкой установки Polyspace, например C:\Program Files\Polyspace\R2019a.

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

  • MISRA C:2012: Этот лист содержит сводку нарушений правил MISRA C ®: 2012 в результатах Polyspace. За резюме следуют подробности каждого нарушения MISRA C: 2012.

  • RTE: Этот лист содержит сводку ошибок времени выполнения, найденных программой проверки кода. За сводкой следует подробная информация о каждой ошибке времени выполнения.

% 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): Считывание результатов проверки кода в таблицу.

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

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

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

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

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

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

Чтобы отформатировать отчет Excel в системах Windows ®, откройте COM-сервер напрямую с помощью actxserver. Например, техническое решение 1-QLD4K использует actxserver чтобы установить соединение между MATLAB ® и Excel, запишите данные на лист и укажите цвета ячеек.

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

Связанные темы