pslinkrun

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

Описание

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

пример

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

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

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

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

пример

[polyspaceFolder, resultsFolder] = pslinkrun(target, opts) анализирует target с параметрами конфигурации из объекта opts опций. Это возвращает местоположение папки результатов.

[polyspaceFolder, resultsFolder] = pslinkrun('-slcc', target, opts) Polyspace запусков на пользовательском коде C/C++, включенном в блоки Вызывающей стороны C и диаграммы 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 и диаграммах Stateflow с помощью pslinkrun('-slcc',...), аргумент target не может быть Блок s-function.

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

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

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

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

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

Индикатор для анализа модели - ссылки в виде TRUE или FALSE.

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

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

Типы данных: логический

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

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

свернуть все

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

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

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

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

Изменить родительскую папку results_$ModelName$, смотрите папку Output.

Представленный в R2012a