getSummary

Просмотрите количество результатов Polyspace, организованных типом результатов (Bug Finder) или цвет и файл (Программа автоматического доказательства Кода)

Описание

пример

resSummary = getSummary(resObj, resultsType) возвращает распределение результатов типа resultsType в наборе результатов Polyspace®, resObj. Результаты устанавливают resObj может быть набор результатов Bug Finder, обозначенный polyspace.BugFinderResults возразите или Программа автоматического доказательства Кода заканчивается набор, обозначенный polyspace.CodeProverResults объект.

Например:

  • Если вы принимаете решение видеть дефекты Bug Finder, вы видите, сколько дефектов каждого типа присутствует в наборе результатов, например, сколько неинициализированных переменных или объявления не сочетается.

  • Если вы принимаете решение видеть проверки на этапе выполнения Программы автоматического доказательства Кода, вы видите, сколько красных, оранжевых, серых и зеленых проверок присутствует в каждом файле.

Примеры

свернуть все

В этом примере показано, как считать результаты анализа Bug Finder из MATLAB®.

Скопируйте демонстрационный набор результатов во временную папку.

resPath=fullfile(polyspaceroot,'polyspace','examples','cxx','Bug_Finder_Example', ...
'Module_1','BF_Result');
userResPath = tempname;
copyfile(resPath,userResPath);

Создайте объект результатов.

resObj = polyspace.BugFinderResults(userResPath);

Считайте результаты в таблицы MATLAB с помощью объекта.

resSummary = getSummary(resObj, 'defects');
resTable = getResults(resObj);

Запустите анализ Polyspace Bug Finder™ демонстрационного файла numerical.c. Сконфигурируйте эти опции:

  • Задайте GCC 4.9 как свой компилятор.

  • Сохраните результаты в results подпапка текущей рабочей папки.

proj = polyspace.Project

% Configure analysis
proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')};
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.ResultsDir = fullfile(pwd,'results');

% Run analysis
bfStatus = run(proj, 'bugFinder');

% Read results
resObj = proj.Results;
bfSummary = getSummary(resObj, 'defects');

В этом примере показано, как считать результаты анализа Программы автоматического доказательства Кода из MATLAB.

Скопируйте демонстрационный набор результатов во временную папку.

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

Создайте объект результатов.

resObj = polyspace.CodeProverResults(userResPath);

Считайте результаты в таблицы MATLAB с помощью объекта.

resSummary = getSummary(resObj, 'runtime');
resTable = getResults(resObj);

Запустите анализ Polyspace Code Prover™ демонстрационного файла single_file_analysis.c. Сконфигурируйте эти опции:

  • Задайте GCC 4.9 как свой компилятор.

  • Сохраните результаты в results подпапка текущей рабочей папки.

  • Укажите что main функция должна быть сгенерирована, если она не существует в исходном коде.

proj = polyspace.Project

% Configure analysis
proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.ResultsDir = fullfile(pwd,'results');
proj.Configuration.CodeProverVerification.MainGenerator = true;


% Run analysis
cpStatus = run(proj, 'codeProver');

% Read results
resObj = proj.Results;
cpSummary = getResults(resObj, 'readable');

Входные параметры

свернуть все

Bug Finder или результаты Программы автоматического доказательства Кода установлены в виде polyspace.BugFinderResults или polyspace.CodeProverResults объект соответственно.

Тип результата в виде вектора символов. Значением по умолчанию для набора результатов Bug Finder является 'defects' и значение по умолчанию для Программы автоматического доказательства Кода заканчивается, набором является 'runtime'.

ЗаписьЗначение
'defects'Дефекты Bug Finder.
'runtime'Программа автоматического доказательства кода проверяет на ошибки времени выполнения.
'misraC'Правила MISRA C®:2004.
'misraCAGC'MISRA C:2004 управляет для сгенерированного кода.
'misraCPP'Правила MISRA® C ++.
'misraC2012'Правила MISRA C:2012.
'jsf'Правила JSF® C ++.
'certC'Правила CERT® C.
'certCpp'CERT правила C++.
'iso17961'Правила ISO®/IEC TS 17961.
'autosarCPP14'AUTOSAR C++ 14 правил.
'metrics'Метрики сложности кода.
'customRules'Пользовательские правила, осуществляющие соглашения о присвоении имен для идентификаторов.

Выходные аргументы

свернуть все

Распределение результатов в виде таблицы. Например:

  • Если вы принимаете решение видеть сводные данные дефектов Bug Finder, извлечение таблицы выглядит так:

    КатегорияДефектУдарОбщее количество
    ПараллелизмГонка данныхВысоко2
    ПараллелизмМертвая блокировкаВысоко 1
    Поток данныхНеинициализированная переменнаяВысоко 2

    Приведенная выше таблица показывает, что набор результатов содержит две гонки данных, одну мертвую блокировку и две неинициализированных переменные.

  • Если вы принимаете решение видеть сводные данные проверок на этапе выполнения Программы автоматического доказательства Кода, извлечение таблицы выглядит так:

    ФайлДоказанныйЗеленыйКрасныйСерыйОранжевый
    file1.c92.0%87328
    file2.c97.7%41011

    Приведенная выше таблица показывает тот file1.c имеет:

Для получения дополнительной информации о таблицах MATLAB см. Таблицы.

Введенный в R2017a