pslinkrunCrossRelease

Анализируйте код C/C++, сгенерированный R2020b или более новыми версиями Embedded Coder при помощи различной версии Polyspace, который более свеж, чем версия Simulink

Описание

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem) запускает анализ Polyspace® кода, сгенерированного от ModelOrSubsystem при помощи Embedded Coder® от более раннего релиза Simulink®.

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt) запускает анализ Polyspace кода, сгенерированного от ModelOrSubsystem посредством более раннего релиза Simulink. Анализ использует параметры конфигурации модели, которые заданы в pslinkoptions объект psOpt.

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt,asModelRef) запускает анализ Polyspace кода, сгенерированного как модель - ссылка от ModelOrSubsystem посредством более раннего релиза Simulink. Анализ использует asModelRef задавать который тип сгенерированного кода анализировать — автономный код или код модели - ссылки.

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt,asModelRef,OptionsFile) запускает анализ Polyspace кода, сгенерированного от ModelOrSubsystem посредством более раннего релиза Simulink. Анализ использует опции анализа Polyspace, заданные в файле опций OptionsFile.

Примеры

свернуть все

Чтобы запустить анализ Polyspace кода, сгенерированного при помощи более раннего релиза Simulink, используйте функцию pslinkrunCrossRelease. Анализ использует параметры конфигурации, сопоставленные с ModelOrSubsystem. Релиз Simulink должен быть R2020b или позже. Прежде чем вы запустите анализ, необходимо интегрировать Polyspace с Simulink. Смотрите Интегрируют Polyspace с MATLAB или Установкой Simulink от Более раннего Релиза.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. Чтобы позволить упаковать сгенерированный код в архиве, установите опцию PackageGeneratedCodeAndArtifacts к true.

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. Создайте временные папки для генерации кода и сгенерируйте код.

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model);
    

  4. Запустите анализ Polyspace.

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

Чтобы запустить анализ Polyspace с модифицированными настройками модели, используйте pslinkoptions объект. Для списка настроек модели, связанных с анализом Polyspace, который можно изменить, см. таблицу Polyspace Configuration Parameters Supported pslinkrunCrossRelease на этой странице. Прежде чем вы запустите анализ, необходимо интегрировать Polyspace с Simulink. Смотрите Интегрируют Polyspace с MATLAB или Установкой Simulink от Более раннего Релиза.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. Чтобы позволить упаковать сгенерированный код в архиве, установите опцию PackageGeneratedCodeAndArtifacts к true.

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. Создайте временные папки для генерации кода и сгенерируйте код.

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model);
    

  4. Чтобы задать настройки модели для анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект при помощи функционального pslinkoptions. Чтобы запустить анализ Bug Finder, установите psOpt.VerificationMode к 'BugFinder'. Чтобы утверждать область значений, заданную в блоке на его входных переменных, задайте psOpts.InputRangeMode как 'DesignMinMax'.

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set model configurtion for the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    
    

  5. Запустите анализ Polyspace. Чтобы задать настройку модели для анализа Polyspace, установите объект psOpt в качестве дополнительного второго аргумента в pslinkrunCrossRelease.

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpt);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

Чтобы ускорить симуляции модели, вызовите модели Simulink, на которые ссылаются, как цели симуляции. Чтобы сгенерировать цели симуляции модели - ссылки из модели Simulink, сгенерируйте код от ModelOrSubsystem при помощи slbuild с процессом сборки, заданным как ModelReferenceCoderTargetOnly. Группируйте сгенерированный код при помощи packNGo (Embedded Coder). Затем анализируйте сгенерированный код путем выполнения анализа Polyspace перекрестного релиза. Прежде чем вы запустите анализ, необходимо интегрировать Polyspace с Simulink. Смотрите Интегрируют Polyspace с MATLAB или Установкой Simulink от Более раннего Релиза.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');
    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)

  2. Создайте временные папки для генерации кода и сгенерируйте код. Задайте опцию ModelReferenceCoderTargetOnly. Смотрите slbuild (Simulink).

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model,'ModelReferenceCoderTargetOnly');
    Сгенерированный код хранится в папке slprj

  3. Чтобы группировать код, который сгенерирован как модель - ссылка, используйте функцию packNGo. Найдите файл buildinfo.mat в <working folder>/slprj/ert/rtwdemo_counter и используйте полный путь для него как вход к packNGo. Эта команда генерирует архив, содержащий сгенерированный код и объект buildinfo.mat. Смотрите packNGo (Embedded Coder).

    % Locate buildinfo and generate code archive
    buildinfo = fullfile(pwd,'slprj','ert',model,'buildinfo.mat');
    packNGo(buildinfo)

  4. Чтобы задать опции анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект при помощи функционального pslinkoptions. Чтобы запустить анализ Bug Finder, установите psOpt.VerificationMode к 'BugFinder'.

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set properties that define the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    
    

  5. Запустите анализ Polyspace. Чтобы задать опции анализа Polyspace, установите объект psOpt в качестве дополнительного второго аргумента в pslinkrunCrossRelease. Чтобы анализировать код как модель - ссылку, установите дополнительный третий аргумент asModelRef к истине.

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpt,true);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. Чтобы позволить упаковать сгенерированный код в архиве, установите опцию PackageGeneratedCodeAndArtifacts к true.

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. Создайте временные папки для генерации кода и сгенерируйте код.

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model);
    

  4. Чтобы задать настройку модели для анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект при помощи функционального pslinkoptions. Чтобы запустить анализ Bug Finder, установите psOpt.VerificationMode к 'BugFinder'.

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set properties that define the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    

  5. Чтобы задать опции анализа Polyspace, создайте файл опций. Файл опций является текстовым файлом, который содержит опции Polyspace в плоском списке, одной линии для каждой опции. Например, чтобы включить всем средствам проверки Bug Finder и C++ AUTOSAR 14 правил кодирования, создайте текстовый файл под названием OptionFile.txt. В текстовом файле, введите:

    -checkers all
    -autosarcpp14 all
    Сохраните файл опций. Можно сохранить предыдущие опции в файле с именем опций Options.txt в папке работы по умолчанию.

    Смотрите опции анализа в Polyspace Code Prover.

  6. Запустите анализ Polyspace.

    • Чтобы задать настройки модели для запущенного анализа Polyspace, установите объект psOpt в качестве дополнительного второго аргумента в pslinkrunCrossRelease.

    • Поскольку код сгенерирован как автономный код, установите третий аргумент asModelRef к false.

    • Чтобы задать опции анализа Polyspace, задайте относительный путь к созданному файлу опций как четвертый аргумент.

    %  Locate options file
    optionsPath = fullfile(userpath,'Options.txt');
    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

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

свернуть все

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

Пример: resultsDir = pslinkrunCrossRelease('rtwdemo_roll') где rtwdemo_roll имя модели.

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

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

Параметры конфигурации Polyspace, поддержанные pslinkrunCrossRelease

СвойствоОписаниеЗначениеОписание
EnableAdditionalFileListПозвольте дополнительному списку файлов анализироваться в виде true или false. Используйте с AdditionalFileList опция. truePolyspace проверяет дополнительные файлы, заданные в AdditionalFileList опция.
false (значение по умолчанию)Polyspace не проверяет дополнительные файлы.
AdditionalFileListСписок дополнительных файлов, которые будут анализироваться в виде массива ячеек файлов. Чтобы добавить эти файлы в анализ, используйте EnableAdditionalFileList опция.cellArrayPolyspace рассматривает перечисленные файлы для верификации.
VerificationModeАналитический режим Polyspace, заданный как 'BugFinder', для анализа Bug Finder или 'CodeProver', для верификации Программы автоматического доказательства Кода.'BugFinder'Polyspace запускает анализ Bug Finder.
'CodeProver' (значение по умолчанию)Polyspace запускает анализ Программы автоматического доказательства Кода.
InputRangeModeУказывает диапазон входных переменных.'DesignMinMax' (значение по умолчанию)Polyspace использует входной диапазон, заданный в рабочей области или блоке.
'Fullrange'Polyspace использует полнофункциональные входные параметры.
ParamRangeModeУказывает диапазон постоянных параметров.'DesignMinmax'Polyspace использует постоянную область значений параметра, заданную в рабочей области или в блоке.
'None' (значение по умолчанию)Polyspace использует значение параметров, заданных в коде.
OutputRangeModeЗадает выходные утверждения.'DesignMinMax'Polyspace применяет утверждения к выходным параметрам при помощи области значений, заданной в блоке или рабочей области.
'None' (значение по умолчанию)Polyspace не применяет утверждения к выходным переменным.
ModelRefVerifDepthЗадайте глубину для анализа моделей, на которые ссылается текущая модель.'Current model Only' (значение по умолчанию)Polyspace анализирует только топ-модель, не анализируя модели, на которые ссылаются. Используйте эту опцию, когда вы обращаетесь к моделям, которые не должны анализироваться, такие как модели библиотеки.
'1'|'2'|'3'Polyspace анализирует модели, на которые ссылаются, до заданной глубины в ссылочной иерархии. Чтобы анализировать модели, на которые ссылается топ-модель, задайте свойство ModelRefVerifDepth как '1'. Чтобы анализировать модели, на которые ссылается первый уровень ссылок, задайте это свойство как '2'.
'All'Polyspace проверяет все модели, на которые ссылаются.
ModelRefByModelRefVerifЗадайте, хотите ли вы анализировать все модели, на которые ссылаются, вместе или индивидуально.truePolyspace анализирует топ-модель и модели, на которые ссылаются, вместе. Используйте эту опцию, чтобы проверять на интегрирование или масштабирующиеся проблемы.
false (значение по умолчанию)Polyspace анализирует топ-модель и модели, на которые ссылаются, индивидуально.
AutoStubLUTЗадает, как используются интерполяционные таблицы.true (значение по умолчанию)Polyspace блокирует интерполяционные таблицы и проверяет модель, не анализируя код интерполяционной таблицы.
falsePolyspace включает код интерполяционной таблицы в анализ.
CheckConfigBeforeAnalysisЗадает уровень проверки настройки, сделанной, прежде чем анализ Polyspace запустится.'Off'Polyspace проверяет только на ошибки. Анализ останавливается, если ошибки найдены.
'OnWarn' (значение по умолчанию)Polyspace останавливает анализ, когда ошибки найдены, и отображает сообщение, когда предупреждения найдены.
'OnHalt'Polyspace останавливает анализ, когда или ошибки или предупреждения найдены.

Пример: pslinkrunCrossRelease('rtwdemo_roll', psOpt), где psOpt объект опций, созданный путем вызова pslinkoptions

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

  • Если asModelRef false (значение по умолчанию), функция генерирует файлы опций так, чтобы Polyspace анализировал сгенерированный код как автономный код.

  • Если asModelRef true, функция генерирует файлы опций так, чтобы Polyspace анализировал сгенерированный код как код модели - ссылки.

Пример: pslinkrunCrossRelease('rtwdemo_roll', psOpt,true)

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

Относительный путь к текстовому файлу, который содержит список опций анализа Polyspace. Файл опций должен иметь каждую опцию в отдельной линии.

Пример: pslinkrunCrossRelease('rtwdemo_roll', psOpt,true,'OptionsFile.txt')

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

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

свернуть все

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

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

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

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

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

Введенный в R2021a