polyspace.Project

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

Описание

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

Примечание

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

Создание

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

Свойства

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

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

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

  • Установите язык исходного кода на '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 объект orpolyspace.CodeProverResults Объект (Polyspace Code Prover).

Чтобы считать результаты, используйте эти методы 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

Примеры

свернуть все

Запустите анализ 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');

Запустите анализ 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 = 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