exponenta event banner

класс polyspace.ModelLinkOptions

Пакет: полиспейс

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

Описание

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

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

Примечание

Перед запуском Polyspace из MATLAB необходимо связать установки Polyspace и MATLAB. См. раздел Интеграция полиспейса с 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 (Симулинк).

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

Пример: 'psdemo_model_link_sl'

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

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

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

  • Для анализа сгенерированного кода, используемого или вызываемого в другом месте, установите флаг asModelRef кому true. Эта опция эквивалентна выбору команды «Анализ кода из» > «Код, созданный как ссылка на модель» на вкладке «Полиспейс» в панели инструментов Simulink.

  • Для анализа кода, создаваемого для использования в качестве автономного кода, установите флаг asModelRef кому false. Этот параметр эквивалентен выбору команды «Анализ кода из» > «Код, созданный как верхняя модель» на вкладке «Полиспейс» в панели инструментов Simulink.

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

Свойства

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

Методы

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

Примеры

свернуть все

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

Создание кода из модели sldemo_bounce. Перед созданием кода установите системный целевой файл, подходящий для анализа кода. См. также Рекомендуемые параметры конфигурации модели для анализа в пространстве.

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

Связать a polyspace.ModelLinkOptions объект с моделью. Подмножество свойств объекта задается из параметров конфигурации, связанных с моделью. Другие свойства принимают значения по умолчанию. Дополнительные сведения о параметрах конфигурации см. в разделе Анализ полиспейса в 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. Дополнительные сведения см. в разделе Рекомендуемые параметры конфигурации модели для анализа в пространстве.

%  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 (Симулинк). Установите buildspec параметр для 'ModelReferenceCoderTargetOnly'.

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

Чтобы настроить анализ создаваемого кода Polyspace, создайте объект options psOpt с помощью функции pslinkoptions. При необходимости измените свойства объекта. Например, для выполнения анализа проверки кода установите значение 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