pslinkrun

Запустите анализ Polyspace на модели, системе или S-функции

Описание

[polyspaceFolder, resultsFolder] = pslinkrun анализирует код, сгенерированный из текущей системы, используя опции строения, связанные с текущей системой. Оно возвращает расположение папки результатов. Текущая система является системой, возвращаемой командой bdroot (Simulink).

пример

[polyspaceFolder, resultsFolder]= pslinkrun(target) анализирует target с опциями строения, связанными с моделью, содержащей target. Перед запуском анализа необходимо:

  • Сгенерируйте код для моделей и подсистем.

  • Скомпилируйте S-функции.

[polyspaceFolder, resultsFolder] = pslinkrun('-slcc',target) запускает Polyspace® на C/C + + пользовательском коде, включенном в блоки C Caller и диаграммы Stateflow в модели.

пример

[polyspaceFolder, resultsFolder] = pslinkrun(target, opts) анализирует target использование опций строения, заданных в объекте opts. Оно возвращает расположение папки результатов.

[polyspaceFolder, resultsFolder] = pslinkrun('-slcc', target, opts) запускает Polyspace на C/C + + пользовательском коде, включенном в блоки C Caller и диаграммы Stateflow в модели. В анализе используются опции строения, заданные в объекте opts.

пример

[polyspaceFolder, resultsFolder] = pslinkrun(target, opts, asModelRef) использует asModelRef для определения типа сгенерированного кода для анализа - автономного кода или модели-ссылки кода. Эта опция полезна, когда вы хотите проанализировать код, который генерируется как модель-ссылка. Код, который генерируется как модель-ссылка, предназначен для вызова или использования в других моделях или коде.

пример

[polyspaceFolder, resultsFolder] = pslinkrun('-codegenfolder', codegenFolder, opts) запускает Polyspace на C/C + + коде, сгенерированном из MATLAB® код и сохраненный в codegenFolder.

Примечание

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

Примеры

свернуть все

Использование Simulink® модель, чтобы сгенерировать код, задать опции строения, а затем запустить анализ из командной строки.

% Generate code from the model WhereAreTheErrors.
model = 'WhereAreTheErrors';
load_system(model);
slbuild(model);

% Create a Polyspace options object from the model. 
opts = pslinkoptions(model);

% Set properties that define the Polyspace analysis.
opts.VerificationMode = 'CodeProver';
opts.VerificationSettings = 'PrjConfigAndMisraC2012';

% Run Polyspace using the options object.
[polyspaceFolder, resultsFolder] = pslinkrun(model,opts);
bdclose(model);

Результаты и соответствующий проект Polyspace сохраняются в results_WhereAreTheErrors папка, перечисленная в polyspaceFolder переменная. Полный путь к папке результатов находится в resultsFolder переменная.

Используйте модель Simulink, чтобы сгенерировать код модели-ссылки, задать опции строения, а затем запустить анализ из командной строки.

% Generate code from the model WhereAreTheErrors.
% Treat WhereAreTheErrors as if referenced by another model.
model = 'WhereAreTheErrors';
load_system(model);
slbuild(model,'ModelReferenceCoderTargetOnly');

% Create a Polyspace options object from the model. 
opts = pslinkoptions(model);

% Set properties that define the Polyspace analysis.
opts.VerificationMode = 'CodeProver';
opts.VerificationSettings = 'PrjConfigAndMisraC2012';

% Run Polyspace with the options object.
[polyspaceFolder, resultsFolder] = pslinkrun(model,opts,true);
bdclose(model);

Результаты и соответствующий проект Polyspace сохраняются в results_mr_WhereAreTheErrors папка, перечисленная в polyspaceFolder переменная. Полный путь к папке результатов находится в resultsFolder переменная.

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

% Generate code from the model WhereAreTheErrors.
model = 'psdemo_model_link_sl';
load_system(model);
slbuild(model);

% Create a generic options object to use for multiple model analyses.
opts = polyspace.ModelLinkOptions();
opts.CodingRulesCodeMetrics.EnableMisraC3 = true;
opts.CodingRulesCodeMetrics.MisraC3Subset = 'all';
opts.MergedReporting.ReportOutputFormat = 'PDF';
opts.MergedReporting.EnableReportGeneration = true;

% Create a model-specific options object.
mlopts = pslinkoptions(model);

% Create a project from the generic options object.
% Associate the project with the model-specific options object. 
prjfile = opts.generateProject('model_link_opts');
mlopts.EnablePrjConfigFile = true;
mlopts.PrjConfigFile = prjfile;
mlopts.VerificationMode = 'BugFinder';

% Run Polyspace with the model-specific options object.
[polyspaceFolder, resultsFolder] = pslinkrun(model,mlopts);
bdclose(model);

После завершения анализа результаты автоматически открываются в интерфейсе Polyspace.

В этом примере показано, как проанализировать код C/C + +, сгенерированный из кода MATLAB.

% Generate code
codeName = 'average_filter';
matlabFileName = fullfile(polyspaceroot, 'help',...
    'toolbox','codeprover','examples','matlab_coder','averaging_filter.m');
codegenFolder = fullfile(pwd, 'codegenFolder');
codegen(matlabFileName, '-config:lib', '-c', '-args', ...
   {zeros(1,100,'double')}, '-d', codegenFolder);

% Configure Polyspace analysis
opts = pslinkoptions('ec');
opts.ResultDir = ['results_',codeName];
opts.OpenProjectManager = 1;

% Run Polyspace
[polyspaceFolder, resultsFolder] = pslinkrun('-codegenfolder', codegenFolder, opts);

После завершения анализа результаты автоматически открываются в интерфейсе Polyspace.

Входные параметры

свернуть все

Цель анализа, заданная в качестве вектора символов, с моделью, системой или S-функцией в одинарных кавычках. Значение по умолчанию является системой, возвращаемой bdroot (Simulink).

Если вы анализируете пользовательский код в блоках C Caller и диаграммах Stateflow, используя pslinkrun('-slcc',...), аргумент target не может быть блоком S-Function.

Пример: [polyspaceFolder, resultsFolder] = pslinkrun('demo') где demo - имя модели.

Пример: [polyspaceFolder, resultsFolder] = pslinkrun('path/to/sfunction')

Типы данных: char

Задайте опции строения target, заданный как объект опций Polyspace. Функция pslinkoptions создает такой объект опций. Можно настроить объект опции путем изменения pslinkoption свойства.

Пример: pslinkrun('demo', opts_demo) где demo - имя модели и opts_demo является объектом опции.

Индикатор для модели-ссылки анализа, заданный как true или false.

  • Если asModelRef false (по умолчанию), Polyspace анализирует сгенерированный код как самостоятельный код. Эта опция эквивалентна выбору Verify Code Generated For > Model в опциях Simulink Polyspace.

  • Если asModelRef true, Polyspace анализирует сгенерированный код как модель-ссылка код. Эта опция эквивалентна выбору Verify Code Generated For > Referenced Model в опциях Simulink Polyspace. Указание модели-ссылки кода указывает, что Polyspace должен искать сгенерированный код в другом месте от местоположения для автономного кода.

Типы данных: logical

Папка, содержащая код C/C + +, сгенерированный из кода MATLAB, заданный как вектор символов. Вы задаете эту папку с codegen команда с использованием флага -d.

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

свернуть все

Имя папки, содержащей проект Polyspace и результаты, заданное как вектор символов. Значение по умолчанию этой переменной results_$ModelName$.

Чтобы изменить это значение, смотрите Выходную папку.

Полный путь к подпапке, содержащей результаты Polyspace, заданный как вектор символов.

Папка results_$ModelName$ содержит ваш проект Polyspace и подпапку $ModelName$ с результатами анализа. Эта переменная предоставляет полный путь к подпапке. Вы можете использовать этот путь с polyspace.BugFinderResults или polyspace.CodeProverResults (Polyspace Code Prover) объект.

Как изменить родительскую папку results_$ModelName$, см. «Выходная папка».

Введенный в R2012a