exponenta event banner

полипространство. Проект

Выполните анализ Polyspace для кода C и C++ и прочтите результаты

Описание

Выполните анализ Polyspace ® для исходных файлов C и C++ с помощью этого объекта MATLAB ®. Чтобы указать исходные файлы и настроить параметры анализа, используйте Configuration собственность. Для выполнения анализа используйте run способ. Чтобы прочитать результаты после анализа, используйте Results собственность.

Примечание

Перед запуском Polyspace из MATLAB необходимо связать установки Polyspace и MATLAB. См. раздел Интеграция полиспейса с MATLAB и Simulink.

Создание

proj = polyspace.Project создает объект, который можно использовать для настройки и выполнения анализа Polyspace, а затем считывает результаты анализа.

Свойства

развернуть все

Опции для выполнения анализа Polyspace, реализованного как polyspace.Options объект. Объект имеет свойства, соответствующие параметрам анализа. Дополнительные сведения об этих свойствах см. в разделе polyspace. Свойства Project.Configuration.

Можно сохранить параметры по умолчанию или изменить их одним из следующих способов:

  • Установите язык исходного кода в 'C', 'CPP', или'C-CPP'(по умолчанию). Некоторые параметры анализа могут быть недоступны в зависимости от языковых параметров объекта.

    proj=polyspace.Project;
    proj.Configuration=polyspace.Options('C');

  • Измените свойства напрямую.

    proj = polyspace.Project;
    proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
  • Получение опций из другого polyspace.Project объект.

    proj1 = polyspace.Project;
    proj1.Configuration.TargetCompiler.Compiler = 'gnu4.9';
    
    proj2 = proj1;
    

    Чтобы использовать общие параметры анализа для нескольких проектов, используйте этот подход. Например, требуется повторно использовать все параметры и изменять только исходные файлы.

  • Получение опций из проекта, созданного в интерфейсе пользователя настольных продуктов Polyspace (.psprj файл).

    proj = polyspace.Project;
    projectLocation = fullfile(polyspaceroot, 'polyspace', ... 
        'examples', 'cxx', 'Bug_Finder_Example', 'Bug_Finder_Example.psprj')
    proj.Configuration = polyspace.loadProject(projectLocation);

    Чтобы определить оптимальный набор опций, задайте параметры в интерфейсе пользователя, а затем импортируйте их в polyspace.Project объект. В интерфейсе пользователя можно получить справку из таких функций, как помощник по компиляции, и получить всплывающую подсказку о параметрах.

  • Получите опции от модели Simulink ® (применяется только к настольным продуктам Polyspace). Перед получением опций создайте код из модели.

    modelName = 'rtwdemo_roll';
    load_system(modelName);
    
    % Set parameters for Embedded Coder target
    set_param(modelName, 'SystemTargetFile', 'ert.tlc');
    set_param(modelName,'Solver','FixedStepDiscrete');
    set_param(modelName,'SupportContinuousTime','on');
    set_param(modelName,'LaunchReport','off');
    set_param(modelName,'InitFltsAndDblsToZero','on');
    
    if exist(fullfile(pwd,'rtwdemo_roll_ert_rtw'), 'dir') == 0
        slbuild(modelName);
    end
    
    % Obtain configuration from model
    proj = polyspace.Project;
    proj.Configuration = polyspace.ModelLinkOptions(modelName);
    

    Используйте опции для анализа кода, созданного из модели.

Результаты анализа Polyspace. При создании polyspace.Project , это свойство изначально пусто. Свойство заполняется только после выполнения run способ объекта. В зависимости от аргумента run способ, 'bugFinder' или 'codeProver', свойство реализуется как polyspace.BugFinderResults объект илиpolyspace.CodeProverResults объект.

Чтобы прочитать результаты, используйте эти методы polyspace.BugFinderResults или polyspace.CodeProverResults объект:

  • getSummaryПолучение сводного формата результатов в таблице MATLAB.

    proj = polyspace.Project;
    proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
        'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
    proj.Configuration.ResultsDir = fullfile(pwd,'results');
    
    run(proj, 'bugFinder');
    
    resObj = proj.Results;
    resTable = getSummary(resObj, 'defects');

    Дополнительные сведения см. в разделе getSummary.

  • getResultsПолучение полных результатов или более удобочитаемого формата в таблицу MATLAB.

    proj = polyspace.Project;
    proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
        'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
    proj.Configuration.ResultsDir = fullfile(pwd,'results');
    
    run(proj, 'bugFinder');
    
    resObj = proj.Results;
    resTable = getResults(resObj, 'readable');

    Дополнительные сведения см. в разделе getResults.

Функции объекта

runВыполнение анализа Polyspace

Примеры

свернуть все

Выполнить анализ Finder™ ошибки Polyspace в файле примера 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');

Выполнение анализа Prover™ кода Polyspace в файле примера 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 = getSummary(resObj, 'runtime');

Выполните анализ Polyspace Bug Finder для файла примера single_file_analysis.c. Настройте следующие параметры:

  • Укажите GCC 4.9 в качестве компилятора.

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

  • Включите проверку правил MISRA C ®: 2012. Проверьте только обязательные правила.

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');
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true;
proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory';

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

% Read results
resObj = proj.Results;
defectsSummary = getSummary(resObj, 'defects');
misraSummary = getSummary(resObj, 'misraC2012');
Представлен в R2017b