pslinkfun

Управляйте анализом модели в командной строке

Синтаксис

pslinkfun('annotations','type',typeValue,'kind',kindValue,Name,Value)
pslinkfun('openresults',systemName)
pslinkfun('settemplate',psprjFile)
prjTemplate = pslinkfun('gettemplate')
pslinkfun('advancedoptions')
pslinkfun('enablebacktomodel')
pslinkfun('help')
pslinkfun('metrics')
pslinkfun('jobmonitor')
pslinkfun('stop')

Описание

пример

pslinkfun('annotations','type',typeValue,'kind',kindValue,Name,Value) добавляет аннотация типа typeValue и добрый kindValue к выбранному блоку в модели. Можно задать различный блок с помощью аргумента пары Name,Value. Можно также добавить примечания о классификации серьезности, рабочем состоянии или других комментариях с помощью пар Name,Value.

В сгенерированном коде, сопоставленном с аннотируемым блоком, Polyspace® добавляет комментарии к коду до и после строк кода. Polyspace читает эти комментарии и отмечает результаты Polyspace заданного kind с аннотируемой информацией.

Ограничения синтаксиса:

  • У вас может быть только одна аннотация на блок. Если блок производит и нарушение правила и ошибку, можно аннотировать только один тип.

  • Даже при том, что вы применяете аннотации к отдельным блокам, осциллограф аннотации может быть больше. Сгенерированный код от одного блока может наложиться с другим, заставив аннотацию также наложиться.

    Например, рассмотрите эту модель. Первый блок суммирования имеет аннотацию Polyspace, но второе не делает.

    Однако связанный сгенерированный код добавляет все три входных параметров в одной строке кода.

    /* polyspace:begin<RTE:OVFL:Medium:To Fix>*/
    annotate_y.Out1=(annotate_u.In1+annotate_U.In2)+annotate_U.In3;
    /* polyspace:end<RTE:OVFL:Medium:To Fix> */
    Поэтому аннотация выравнивает по ширине оба суммирования.

пример

pslinkfun('openresults',systemName) открывает результаты Polyspace, сопоставленные с моделью или подсистемой systemName в среде Polyspace.

пример

pslinkfun('settemplate',psprjFile) устанавливает конфигурационный файл для новых верификаций.

пример

prjTemplate = pslinkfun('gettemplate') возвращает конфигурационный файл шаблона, используемый для новых исследований.

пример

pslinkfun('advancedoptions') открывает усовершенствованное окно настроек верификации, чтобы сконфигурировать дополнительные опции для текущей модели.

пример

pslinkfun('enablebacktomodel') включает назад к особенности модели из плагина Simulink®. Если ваши результаты Polyspace правильно не соединяются, чтобы отступить к блокам модели, запускают эту команду.

пример

pslinkfun('help') открывает документацию Polyspace в отдельном окне. Используйте эту опцию для только pre-R2013b версии MATLAB®.

пример

pslinkfun('metrics') открывает интерфейс Polyspace Metrics.

пример

pslinkfun('jobmonitor') открывает Монитор Задания Polyspace, чтобы отобразить удаленные верификации в очереди.

пример

pslinkfun('stop') уничтожает анализ кода, который в настоящее время запускается. Используйте эту опцию для локальных исследований только.

Примечание

Прежде чем вы запустите Polyspace из MATLAB, необходимо соединить Polyspace и установки MATLAB. Смотрите Интегрируют Polyspace с MATLAB и Simulink.

Примеры

свернуть все

Используйте функцию аннотации Polyspace, чтобы аннотировать блок и видеть аннотацию в результатах верификации.

В модели WhereAreTheErrors в качестве примера, набор текущий блок к блоку деления подсистемы 10* x // (x-y). Затем добавьте аннотацию в текущий блок, чтобы отметить деление на нуль (DIV) ошибки, как выровнено по ширине с аннотацией.

model = 'WhereAreTheErrors';
open(model)
gcb = 'WhereAreTheErrors/10* x // (x-y)/Divide';
pslinkfun('annotations','type','RTE','kind','ZDV','status',...
	'justified','comment','verified not an error')

В Simulink блок деления подсистемы 10* x // (x-y) теперь имеет аннотацию Polyspace.

В командной строке сгенерируйте код для модели и запустите верификацию. После того, как анализ закончен, откройте результат в среде Polyspace:

slbuild(model)
pslinkrun(model)
pslinkfun('openresults',model)
Если вы смотрите на оранжевую ошибку деления на нуль, проверка выравнивается по ширине и включает состояние и комментарии из вашей аннотации.

Измените усовершенствованные опции Polyspace и установите новую настройку как шаблон.

Загрузите модель WhereAreTheErrors и откройте окно расширенных настроек.

model = 'WhereAreTheErrors';
load_system(model)
pslinkfun('advancedoptions')

В панели Run Settings выберите опции Run Code Prover analysis on a remote cluster и Upload results to Polyspace Metrics.

Установите шаблон конфигурации для новых исследований Polyspace иметь эти опции.

pslinkfun('settemplate',fullfile(cd,'pslink_config',...
    'WhereAreTheErrors_config.psprj'))

Просмотрите текущий шаблон Polyspace.

template = pslinkfun('gettemplate')
template = 
C:\ModelLinkDemo\pslink_config\WhereAreTheErrors_config.psprj

Запустите удаленный анализ, просмотрите анализ в очереди и рассмотрите метрики.

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

Создайте модель WhereAreTheErrors, создайте объект опций Polyspace, установите режим верификации и откройте окно расширенных настроек.

model = 'WhereAreTheErrors';
load_system(model)
slbuild(model)
opts = pslinkoptions(model);
opts.VerificationMode = 'CodeProver';
pslinkfun('advancedoptions')

В панели Run Settings выберите опции Run Code Prover analysis on a remote cluster и Upload results to Polyspace Metrics.

Запустите Polyspace, затем откройте Монитор Задания, чтобы контролировать ваше удаленное задание.

pslinkrun(model,opts)
pslinkfun('jobmonitor')

После того, как ваше задание закончено, откройте метрический сервер, чтобы видеть ваше задание в репозитории.

pslinkfun('metrics')

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

свернуть все

Тип результата, которым можно аннотировать блок, заданный как:

  • 'RTE' для ошибок времени выполнения.

  • 'MISRA-C' для MISRA C®, кодирующего нарушения правила (Только код С).

  • 'MISRA-AC-AGC' для MISRA C кодирующий нарушения правила (Только код С).

  • 'MISRA-CPP' для MISRA® C ++, кодирующего нарушения правила (Только код С++).

  • 'JSF' для JSF® C ++, кодирующего нарушения правила (Только код С++).

Пример: 'type','MISRA-C'

Определенная проверка или кодирующий правило, заданное акронимом проверки или кодирования, управляет номером. Для определенного входа для каждого типа аннотации см. следующую таблицу.

Значение typeЗначения kind
'RTE'

Используйте сокращение, сопоставленное с типом проверки, которую вы хотите аннотировать. Например, 'UNR' – Недостижимый Код.

Для списка возможных проверок см.: проверки на этапе выполнения.

'MISRA-C'

Используйте номер правила, который вы хотите аннотировать. Например, '2.2'.

Для списка поддерживаемого MISRA C правила и их числа, смотрите Поддерживаемый MISRA C:2004 и Правила AGC AC MISRA.

'MISRA-AC-AGC'

Используйте номер правила, который вы хотите аннотировать. Например, '2.2'.

Для списка поддерживаемых правил AGC AC MISRA и их чисел, смотрите Поддерживаемый MISRA C:2004 и Правила AGC AC MISRA.

'MISRA-CPP'

Используйте номер правила, который вы хотите аннотировать. Например, '0-1-1'.

Для списка поддерживаемых правил C++ MISRA и их чисел, см. MISRA C ++:2008 Правил.

'JSF'

Используйте номер правила, который вы хотите аннотировать. Например, '3'.

Для списка поддерживаемых правил C++ JSF и их чисел, смотрите, что Поддерживаемый C++ JSF Кодирует Правила.

Пример: pslinkfun('annotations','type','MISRA-CPP','kind','1-2-3')

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

Модель Simulink задана именем подсистемы или системой.

Пример: pslinkfun('openresults','WhereAreTheErrors')

Файл проекта Polyspace, заданный как абсолютный путь к файлу проекта .psprj. Если psprjFile пуст, Polyspace использует стандартный файл шаблона Polyspace. Новые проекты Polyspace запускаются с этой настройки проекта.

Пример: pslinkfun('settemplate', fullfile(polyspaceroot, 'polyspace', 'examples', 'cxx', 'Bug_Finder_Example', 'Bug_Finder_Example.bf.psprj'));

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'block','MyModel\Sum', 'status','to fix'

Блок вы хотите аннотировать заданный именем блока. Если вы не используете эту опцию, блок, возвращенный функциональным gcb, аннотируется.

Пример: 'block','MyModel\Sum'

Серьезность проверки, заданной как high, medium, low или unset.

Пример: 'class','high'

Рабочее состояние проверки, заданной как unreviewed, to investigate, to fix, justified, no action planned, not a defect или other.

Состояния, justified, not a defect и no action planned также отмечают результат, как выровнено по ширине.

Пример: 'status','no action planned'

Дополнительные комментарии, заданные как вектор символов. Комментарии предоставляют больше информации о том, почему результаты выравниваются по ширине.

Пример: 'comment','defensive code'

Смотрите также

| |

Введенный в R2014a