exponenta event banner

pslinkfun

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

Описание

пример

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. См. раздел Интеграция полиспейса с MATLAB и Simulink.

Примеры

свернуть все

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

В примерной модели WhireEventErrors установите текущий блок в блок деления 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) на удаленном кластере и Загрузить результаты в метрики Полиспейса (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) на удаленном кластере и Загрузить результаты в метрики Полиспейса (Upload results to Polyspace Metrics).

Запустите программу Polyspace, а затем откройте монитор заданий для наблюдения за удаленным заданием.

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

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

pslinkfun('metrics')

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

свернуть все

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

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

  • 'MISRA-C' для нарушений правил кодирования MISRA C ® (только код C).

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

  • 'MISRA-CPP' для нарушений правил кодирования MISRA ® C++ (только код C++).

  • 'JSF' для нарушений правил кодирования JSF ® C++ (только код C++).

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

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

type Стоимостьkind Ценности
'RTE'

Используйте сокращение, связанное с типом проверки, которую требуется аннотировать. Например, 'UNR' - Недоступный код.

Список возможных проверок см. в разделе Проверки времени выполнения.

'MISRA-C'

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

Список поддерживаемых правил MISRA C и их номера см. в разделах Поддерживаемые правила MISRA C:2004 и MISRA AC AGC.

'MISRA-AC-AGC'

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

Список поддерживаемых правил MISRA AC AGC и их номера см. в разделах Поддерживаемые правила MISRA C:2004 и MISRA AC AGC.

'MISRA-CPP'

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

Список поддерживаемых правил MISRA C++ и их номера см. в разделе Правила MISRA C++: 2008.

'JSF'

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

Список поддерживаемых правил JSF C++ и их номера см. в разделе Поддерживаемые правила кодирования JSF C++.

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

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

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

Пример: 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 является именем аргумента и 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