полипробел. Класс проекта

Пакет: полипробел

Запустите анализ Polyspace C и Кода С++ и считайте результаты

Описание

Запустите анализ Polyspace® C и исходных файлов C++ при помощи этого объекта MATLAB®.

  • Чтобы задать исходные файлы и настроить аналитические опции, используйте свойство Configuration.

  • Чтобы запустить анализ, используйте метод run.

  • Чтобы считать результаты после анализа, используйте свойство Results.

Примечание

Прежде чем вы запустите Polyspace из MATLAB, необходимо соединить Polyspace и установки MATLAB. Смотрите Интегрируют Polyspace с MATLAB и Simulink.

Конструкция

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

Свойства

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

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

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

  • Установите язык исходного кода на '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
        rtwbuild(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');
    
    proj.run('bugFinder');
    
    resTable = proj.Results.getSummary('defects');

    Для получения дополнительной информации смотрите polyspace.BugFinderResults.getSummary или polyspace.CodeProverResults.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');
    
    proj.run('bugFinder');
    
    resTable = proj.Results.getResults('readable');

    Для получения дополнительной информации смотрите polyspace.BugFinderResults.getResults или polyspace.CodeProverResults.getResults.

Методы

запущенныйЗапустите анализ Polyspace

Примеры

свернуть все

Запустите анализ 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 = proj.run('bugFinder');

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

Запустите анализ 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 = proj.run('codeProver');

% Read results
cpSummary = proj.Results.getSummary('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 = proj.run('bugFinder');

% Read results
defectsSummary = proj.Results.getSummary('defects');
misraSummary = proj.Results.getSummary('misraC2012');

Введенный в R2017b