polyspace.ModelLinkOptions class

Пакет: полипространство

Создайте объект строения проекта для выполнения анализа Polyspace на сгенерированном коде

Описание

Запуск Polyspace® анализ из MATLAB® при помощи объекта строения проекта. Чтобы задать исходные файлы и настроить опции анализа, измените свойства объекта.

Этот класс предназначен для сгенерированного моделью кода. Если вы анализируете рукописный код, используйте polyspace.Options вместо этого.

Примечание

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

Конструкция

psprjConfig = polyspace.ModelLinkOptions создает объект строения проекта, который сконфигурирован для выполнения анализа Polyspace на сгенерированном коде.

psprjConfig = polyspace.ModelLinkOptions(lang) создает объект строения проекта, который сконфигурирован для выполнения анализа на коде, сгенерированном на языке lang.

psprjConfig = polyspace.ModelLinkOptions(model) создает объект строения проекта, который конфигурируется с помощью конкретной информации модели из Simulink® модели model. До извлечения опций из model, вы должны загрузить модель и сгенерировать код из нее.

psprjConfig = polyspace.ModelLinkOptions(model, psOpt) создает объект строения проекта для конкретной модели, который конфигурируется с помощью опций анализа Polyspace, заданных в psOpt.

psprjConfig = polyspace.ModelLinkOptions(model, psOpt, asModelRef) создает объект строения проекта, который использует asModelRef для определения типа сгенерированного кода для анализа - автономного кода или модели-ссылки кода.

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

расширить все

Язык анализа, заданный как 'C-CPP', 'C', или 'CPP'. Этот аргумент определяет свойства объекта.

Имя или путь к модели или подсистеме, заданные как вектор символов.

Перед извлечением опций из модели необходимо:

  1. Загрузите модель. Использовать load_system (Simulink) или open_system (Simulink).

  2. Сгенерируйте код из модели. Использовать slbuild (Simulink) или slbuild (Simulink).

Пример: 'psdemo_model_link_sl'

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

Пример: psOpt = pslinkoptions(model) где model - имя модели Simulink.

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

  • Чтобы проанализировать сгенерированный код, используемый или вызываемый в другом месте, установите флаг asModelRef на true. Эта опция эквивалентна выбору Analyze Code from > Code Generated as Model Reference на вкладке Polyspace на панели инструментов Simulink.

  • Чтобы проанализировать код, который генерируется для использования в качестве автономного кода, установите флаг asModelRef на false. Эта опция эквивалентна выбору Analyze Code from > Code Generated as Top model на вкладке Polyspace на панели инструментов Simulink.

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

Свойства

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

Методы

copyToСкопируйте общие настройки между объектами опций Polyspace
generateProjectСгенерируйте проект psprj из объекта опции
toScriptДобавьте определение объекта опций Polyspace в скрипт

Примеры

свернуть все

В этом примере показано, как настроить и запустить анализ на коде, сгенерированном из модели.

Сгенерируйте код из модели sldemo_bounce. Перед генерацией кода установите системный целевой файл, подходящий для анализа кода. Смотрите также Рекомендуемые параметры конфигурации модели для анализа 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

Ассоциируйте polyspace.ModelLinkOptions объект с моделью. Подмножество свойств объекта устанавливается из параметров конфигурации, сопоставленных с моделью. Другие свойства берут значения по умолчанию. Для получения дополнительной информации о параметрах конфигурации смотрите Polyspace Analysis в Simulink.

psprjCfg = polyspace.ModelLinkOptions(modelName);

При необходимости измените значения свойств. Например, можно указать, что анализ должен проверять для всех MISRA C®Нарушения 2012 года и составление отчета PDF о результатах. Можно также задать папку для результатов анализа.

psprjCfg.CodingRulesCodeMetrics.EnableMisraC3 = true;
psprjCfg.CodingRulesCodeMetrics.MisraC3Subset = 'all';
psprjCfg.MergedReporting.EnableReportGeneration = true;
psprjCfg.MergedReporting.ReportOutputFormat = 'PDF';
psprjCfg.ResultsDir = 'newResfolder';

Создайте polyspace.Project объект. Связать Configuration свойство этого объекта к опциям, которые вы ранее задали.

proj = polyspace.Project;
proj.Configuration = psprjCfg;

Запустите анализ и откройте результаты.

cpStatus = proj.run('codeProver');
proj.Results.getResults('readable');

В этом примере показано, как анализировать сгенерированный код, используемый как вызываемая сущность в другой модели или коде.

Загрузите модель Simulink rtwdemo_roll и сконфигурируйте его для анализа Polyspace. Для получения дополнительной информации смотрите Рекомендуемые параметры конфигурации модели для анализа Polyspace для получения дополнительной информации.

%  Specify model name
model = 'rtwdemo_roll';
% Load the model
load_system(model);
% Configure the model for generating code
set_param(model, 'SystemTargetFile', 'ert.tlc');
set_param(model,'MatFileLogging','off');
set_param(model,'GenerateComments','on');
set_param(model,'Solver','FixedStepDiscrete');
set_param(model,'LaunchReport','off');

Чтобы сгенерировать код как модель-ссылку из модели Simulink, используйте slbuild (Simulink). Установите buildspec параметр в 'ModelReferenceCoderTargetOnly'.

if exist(fullfile(pwd,'slprj','ert'), 'dir') == 0
    slbuild(model,'ModelReferenceCoderTargetOnly');
end

Чтобы сконфигурировать анализ Polyspace сгенерированного кода, создайте объект options psOpt при помощи функции pslinkoptions. Изменяйте свойства объекта по мере необходимости. Например, чтобы запустить анализ Code Prover, установите Verificationmode на 'CodeProver'.

psOpt = pslinkoptions(model);
psOpt.VerificationMode = 'CodeProver';

Чтобы запустить анализ Polyspace, создайте и сконфигурируйте объект строения проекта Polyspace.

  • Чтобы создать объект строения проекта Polyspace, используйте функцию polyspace.ModelLinkOptions.

  • Чтобы связать опции анализа Polyspace с строением проекта, установите объект psOpt как второй аргумент в polyspace.ModelLinkOptions().

  • Чтобы указать, что сгенерированный код должен быть проанализирован как модель-ссылка, задайте третий аргумент следующим 'true'.

Для образца:

psprjCfg = polyspace.ModelLinkOptions(model, psOpt,true);

Чтобы сконфигурировать проект Polyspace, измените свойства psprjCfg объект. Например, чтобы разрешить шашки для обязательных правил MISRA C: 2012 и сгенерировать PDF о результатах, используйте:

psprjCfg = polyspace.ModelLinkOptions(model, psOpt,asModelRef);
psprjCfg.CodingRulesCodeMetrics.EnableMisraC3 = true;
psprjCfg.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory-required';
psprjCfg.MergedReporting.EnableReportGeneration = true;
psprjCfg.MergedReporting.ReportOutputFormat = 'PDF';
Для удобства можно задать отдельную папку результатов.
psprjCfg.ResultsDir = 'newResfolder';

Создайте проект Polyspace при помощи polyspace.Project и связать с ним строение проекта.

proj = polyspace.Project;
proj.Configuration = psprjCfg;

Запустите анализ Polyspace при помощи run функция объекта proj.

cpStatus = proj.run('codeProver');

Поскольку вы включили генерацию отчетов PDF, результат анализа Polyspace сообщается в PDF- файл, которое можно найти в newResfolder/Polyspace-Doc. Чтобы просмотреть результаты в таблице MATLAB, используйте:

result = proj.Results.getResults('readable');

Альтернативы

Если вы анализируете рукописный код, используйте polyspace.Project объект непосредственно. Кроме того, используйте polyspace.Options объект.

Введенный в R2017a