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 в качестве примера установите текущий блок в блок деления 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, а затем откройте Job Monitor, чтобы контролировать ваше удаленное задание.

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

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

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 и их номеров см. в Поддерживаемые C:2004 MISRA и Правила MISRA AC AGC.

'MISRA-AC-AGC'

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

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

'MISRA-CPP'

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

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

'JSF'

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

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

Пример: 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.

Статусы, justified, not a defect, и no action planned также отметьте результат как обоснованный.

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

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

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

См. также

| | (Simulink)

Введенный в R2014a