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 объект. Объект имеет свойства, соответствующие опциям анализа. Для получения дополнительной информации об этих свойствах см. Полипространство. Строения.

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

  • Установите язык исходного кода на 'CCPP', или' 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

Примеры

свернуть все

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