getSummary

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

Описание

пример

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

Для образца:

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

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

Примеры

свернуть все

В этом примере показано, как считать результаты анализа 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');

В этом примере показано, как считать результаты анализа Code Prover из 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 или Code Prover, заданный как polyspace.BugFinderResults или polyspace.CodeProverResults (Polyspace Code Prover) объект соответственно.

Тип результата, заданный как вектор символов. Набором результатов Bug Finder по умолчанию является 'defects' и набором результатов Code Prover по умолчанию является 'runtime'.

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

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

свернуть все

Распределение результатов, заданное как таблица. Для образца:

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

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

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

  • Если вы принимаете решение увидеть сводные данные проверок во время выполнения Code Prover, экстракт таблицы выглядит следующим образом:

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

    Таблица выше показывает, что file1.c имеет:

    • 3 красные, 2 серые и 8 оранжевых чеков.

    • Доказано 92% операций.

      Другими словами, из каждые 100 операций, которые верификации проверяли, 92 операции были доказаны зеленым, красным или серым. См.

Дополнительные сведения о таблицах MATLAB см. в разделе Таблицы.

См. также

| (Polyspace Code Prover)

Введенный в R2017a