Можно использовать более свежий релиз Polyspace® не меняя Simulink® релиз. Смотрите Поддержку Polyspace MATLAB и Simulink из различных релизов.
В таком перекрестном строении используйте функцию pslinkrunCrossRelease
чтобы запустить анализ Polyspace на коде, сгенерированном при помощи Embedded Coder®. Если вы используете Polyspace и Simulink из того же релиза, см. «Запуск анализа Polyspace на коде, сгенерированном из модели Simulink».
При запуске анализа Polyspace из другого релиза MATLAB® или Simulink:
Релиз Polyspace должен быть более свежим по сравнению с релизом Simulink.
Ваш релиз Simulink должен быть R2020b или более поздним.
Необходимо интегрировать Polyspace с Simulink. См. «Интеграция Polyspace с MATLAB и Simulink».
Это перекрестное строение не поддерживает анализ пользовательского кода в вашей модели Simulink.
Чтобы запустить Polyspace анализ кода, сгенерированного при помощи более раннего релиза Simulink, сгенерируйте архив кода из модели Simulink и затем вызовите функцию pslinkrunCrossRelease
. Создайте и настройте pslinkoptions
объект для изменения строения модели. Список опций строения, которые можно изменить, см. в разделе pslinkrunCrossRelease
. Чтобы применить опции анализа Polyspace, используйте файл параметров.
Откройте модель Simulink rtwdemo_roll
и сконфигурируйте модель для генерации кода. Смотрите Рекомендуемые параметры конфигурации модели для анализа Polyspace.
% 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');
Перекрестный анализ требует упаковки сгенерированного кода в архив кода. Установите опцию PackageGeneratedCodeAndArtifacts
на true
.
set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
Создайте временные папки для генерации кода и сгенерируйте код.
[TEMPDIR, CGDIR] = rtwdemodir(); slbuild(model);
mkdir CodeGenFolder; cd CodeGenFolder;
Чтобы задать строение модели для анализа Polyspace, используйте 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';
Чтобы задать опции анализа Polyspace, создайте файл опций. Файл параметров является текстовым файлом, который содержит опции Polyspace в плоском списке, по одной линии для каждой опции. Например, чтобы включить все проверки и правила кодирования CERT C, создайте текстовый файл в текущей папке, содержащий соответствующие опции.
% Create Options file optFile = 'Options.txt'; fid = fopen(optFile,'wt'); option1 = '-checkers all'; option2 = '-cert-c all'; fprintf(fid, '%s\n%s', option1, option2); fclose(fid);
Запустите анализ Polyspace.
Чтобы задать строения модели для запуска анализа Polyspace, установите объект psOpt
как необязательный второй аргумент в pslinkrunCrossRelease
.
Поскольку код генерируется как автономный код, задайте третий аргумент asModelRef
на false
.
Чтобы задать опции анализа Polyspace, укажите относительный путь к созданному файлу опций в качестве четвертого аргумента.
% Locate options file in the current folder optionsPath = fullfile(pwd,optFile); % Run Polyspace analysis [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath); bdclose(model);
В кросс-release рабочем процессе прямые вызовы таких функций, как polyspaceBugFinder
или polyspaceCodeProver
недоступны. Чтобы открыть результаты, используйте функцию pslinkfun
.
Чтобы открыть результаты в пользовательском интерфейсе Polyspace, используйте функцию pslinkfun
. Вектор символов resultsFolder
содержит полный путь к папке результатов.
pslinkfun('openresults', '-resultsfolder',resultsFolder);
Кроме того, загрузите результаты в Polyspace Access. Смотрите Загрузку результатов в Polyspace Access (Polyspace Code Prover Access).
Адресовать результаты. Для получения дополнительной информации смотрите Адрес Polyspace Результаты через исправления ошибок или обоснования.
polyspacePackNGo
| pslinkfun
| pslinkrunCrossRelease
| packNGo
(Embedded Coder) | slbuild
(Simulink)