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. См. «Интеграция Polyspace с MATLAB и Simulink».

Примеры

свернуть все

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

В модели WhereAreTheErrors в пример добавьте аннотацию к блоку switch для MISRA® C правило 13.7 нарушения с комментарием, серьезностью и статусом.

model = 'WhereAreTheErrors';
open(model)
pslinkfun('annotations','type','Misra-C', 'kind', '13.7','block',...
	'WhereAreTheErrors/Switch1','status','to fix','comment','must fix')

В открытой модели можно увидеть аннотацию Polyspace, добавленную к блоку Switch.

Сгенерируйте код для модели и запустите анализ. После завершения анализа откройте результаты в среде Polyspace:

slbuild(model)
opts = pslinkoptions(model);
opts.VerificationMode = 'BugFinder';
opts.VerificationSettings = 'PrjConfigAndMisra';
pslinkrun(model,opts)
pslinkfun('openresults',model)
Пять нарушений правил MISRA C 13.7 аннотируются информацией, добавленной к блоку switch. Аннотации появляются в Status и Comment столбцах.

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

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

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

На панели Run Settings выберите опции Run Bug Finder 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 = 'BugFinder';
pslinkfun('advancedoptions')

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

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

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

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

pslinkfun('metrics')

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

свернуть все

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

  • 'DEFECT' для дефектов.

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

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

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

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

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

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

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

Используйте сокращение, связанную с типом дефекта, который необходимо аннотировать. Для примера, 'int_ovfl' - Целочисленное переполнение.

Список возможных проверок см. в разделе: Результаты Polyspace Bug Finder.

'MISRA-C'

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

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

'MISRA-AC-AGC'

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

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

'MISRA-CPP'

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

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

'JSF'

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

Список поддерживаемых правил JSF C++ и их номеров см. в JSF AV C++ Coding Rules.

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

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

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

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

См. также

| | (Simulink)

Введенный в R2014a