Формат файла для ограничений

Для более точного Polyspace® анализ, можно задать ограничения на глобальные переменные, входные параметры функции и упрямые функции. Можно задать ограничения в пользовательском интерфейсе рабочего стола Polyspace продуктов или в командной строке в виде XML- файле. Общие рабочие процессы см. в разделе «Задание внешних ограничений».

В этом разделе описываются подробные сведения об ограничительной схеме XML- файле. Обычно эти сведения требуются только при создании ограничительного XML с нуля. Если вы запускаете верификацию один раз, программное обеспечение автоматически генерирует файл ограничения шаблона drs-template.xml в папке результатов. Вместо создания ограничительного XML- файл с нуля легче отредактировать этот шаблон XML- файл, чтобы задать ограничения. Для некоторых примеров смотрите:

Другое объяснение того, что означают теги XML, см. в разделе Внешние ограничения для анализа Polyspace.

Вы также можете увидеть информацию в этом разделе и базовую XML-схему в polyspaceroot\ polyspace\drs. Здесь, polyspaceroot является папкой установки Polyspace, например C:\Program Files\Polyspace\R2019a.

Описание синтаксиса - XML- Элементов

Файл ограничений содержит следующие элементы XML:

  • <global> element - Объявляет глобальные возможности и является корневым элементом XML- файлом.

  • <file> элемент - Объявляет возможности. Должно быть заключено в <global> элемент. Может содержать любую переменную или объявление функции. Статические переменные должны быть заключены в элемент файла, чтобы избежать конфликтов.

  • <scalar> элемент - Объявляет целое число или переменную с плавающей точкой. Может быть заключен в любой распознанный элемент, но не может окружать какой-либо элемент. Устанавливает init/permanent/global значения переменных.

  • <pointer> элемент - Объявляет переменную указателя. Может содержать любые другие объявления переменных (включая саму себя), для определения заостренных объектов. Задает, какое значение записывается в указатель (NULL или нет), сколько объектов выделено и как инициализируются заостренные объекты.

  • <array> элемент - Объявляет переменную массива. Может включать любое другое определение переменной (включая ее саму), чтобы задать представители массива.

  • <struct> элемент - Объявляет структурную переменную или объект (образец класса). Может содержать любое другое определение переменной (включая ее саму), для определения полей структуры.

  • <function> элемент - Объявляет возможности метода функции или класса. Может содержать любое определение переменной, чтобы задать аргументы и возврат значение функции. Аргументы должны быть именованы arg1, arg2, …argn и значение возврата должно называться return.

Следующие примечания относятся к конкретным полям в каждом элементе XML:

  • (*) - Поля, используемые только графический интерфейс пользователя. Эти поля не являются обязательными для верификации для принятия областей значений. Поле линия содержит номер линии, где переменная объявлена в исходном коде, complete_type содержит строку с полным типом переменной и base_type используется графический интерфейс пользователя для вычисления значений min и max. Комментарий поля используется для добавления информации о любом узле.

  • (* *) - Имя поля обязательно для элементов возможностей <file> и <function> (кроме указателей на функцию). Для других элементов имя должно быть задано при объявлении корневого символа или struct поле.

  • (* * *) - Если к переменной применяется несколько атрибутов, атрибуты должны быть разделены пространством. Только статический атрибут является обязательным, чтобы избежать конфликтов между статическими переменными с таким же именем. Атрибут может быть задан несколько раз без влияния.

  • (* * * *) - Этот элемент используется только графический интерфейс пользователя, чтобы определить, какой init разрешены режимы для текущего элемента (согласно его типу). Значение работает как маска, где добавляются следующие значения, чтобы указать, какие режимы разрешены:

    • 1: Режим "NO"разрешено.

    • 2 : Режим "INIT"разрешено.

    • 4: Режим "PERMANENT"разрешено.

    • 8: Режим "MAIN_GENERATOR"разрешено.

    Для примера значение "10«означает, что режимы» INIT«и» MAIN_GENERATOR"разрешены. Чтобы увидеть, как это значение вычисляется, смотрите Допустимые режимы и Значения по умолчанию.

  • (* * * * *) - подэлемент массива указателя (т.е. заостренный объект) будет учитываться только в том случае, если init_pointed равно SINGLE, MULTI, SINGLE_CERTAIN_WRITE или MULTI_CERTAIN_WRITE.

  • (* * * * * *) - SINGLE_CERTAIN_WRITE или MULTI_CERTAIN_WRITE доступны для параметров и возвращаемых значений упрямых функций, только если они являются указателями. Если параметром или возвращаемым значением является структура, а у структуры есть поле указателя, они также доступны для поля указателя.

<file> Элемент

ОбластьСинтаксис
namefilepath_or_filename
commentstring

<scalar> Элемент

ОбластьСинтаксис
name (**)name
line (*)line
base_type (*) intx
uintx
floatx
Attributes (***)изменчивый
экстерн
статичный
const
complete_type (*) type
init_mode MAIN_GENERATOR
ПРОИГНОРИРОВАТЬ
В этом
ПОСТОЯННЫЙ
отключенный
неподдержанный
init_modes_allowed (*)single value (****)
init_range range
отключенный
неподдержанный
global_ assert ДА
НЕТ
отключенный
неподдержанный
assert_rangerange
отключенный
неподдержанный
comment(*)string

<pointer> Элемент

ОбластьСинтаксис
Name (**) name
line (*) line
Attributes (***)изменчивый
экстерн
статичный
const
complete_type (*)type
init_mode MAIN_GENERATOR
ПРОИГНОРИРОВАТЬ
В этом
ПОСТОЯННЫЙ
отключенный
неподдержанный
init_modes_allowed (*)single value (****)
initialize_ pointerМогут быть:
ПУСТОЙ УКАЗАТЕЛЬ
Не NULL
ПУСТОЙ УКАЗАТЕЛЬ
number_ allocatedsingle value
отключенный
неподдержанный
init_pointed (******)

MAIN_GENERATOR

NONE

SINGLE

MULTI

SINGLE_CERTAIN_WRITE

MULTI_CERTAIN_WRITE

disabled

commentstring

<array> и <struct> Элементы

ОбластьСинтаксис
Name (**) name
line (*) line
complete_type (*)type
attributes (***)изменчивый
экстерн
статичный
const
commentstring

<function> Элемент

ОбластьСинтаксис
Name (**) name
line (*) line
main_generator_calledMAIN_GENERATOR
ДА
НЕТ
отключенный
attributes (***) статичный
экстерн
неиспользованный
commentstring

Допустимые режимы и значения по умолчанию

ВозможностиНапечатать Режимы InitРежим ГассертаИнициализируйте указательInit выделенДефолт
Глобальные переменныеБазовый типНеквалифицированный/
статический/
const
скаляр
MAIN_
ГЕНЕРАТОР
ПРОИГНОРИРОВАТЬ
В этом
ПОСТОЯННЫЙ
ДА
НЕТ
  Зависимый основной генератор
Летучий скаляр ПОСТОЯННЫЙотключенный  ПОСТОЯННЫЕ мин. макс.
Внешние скаляры INIT PERMANT ДА
НЕТ
  INIT min.. max
StructСтруктурное полеСм. тип поля
МассивЭлемент массиваСм. тип элемента
Глобальные переменныеУказательНеквалифицированный/
статический/
const
скаляр
MAIN_
ГЕНЕРАТОР
ПРОИГНОРИРОВАТЬ
В этом
 Может иметь значение NULL
Не NULL
ПУСТОЙ УКАЗАТЕЛЬ
Ничего
Одинок
МНОГО
Зависимый основной генератор
Волатильный указательне-
поддержанный
 не-
поддержанный
не-
поддержанный
 
Указатель на Экстерн ПРОИГНОРИРОВАТЬ
В этом
 Может иметь значение NULL
Не NULL
ПУСТОЙ УКАЗАТЕЛЬ
Ничего
Одинок
МНОГО
INIT Может быть
NULL max
МНОГО
Остроконечный летучий скалярне-
поддержанный
не-
поддержанный
   
Остроконечный экстерн скалярВ этомне-
поддержанный
  В этом
min.. max
Заострённые другие скалярыMAIN_
ГЕНЕРАТОР
В этом
не-
поддержанный
  MAIN_
ГЕНЕРАТОР
иждивенец
Указатель на точкуMAIN_
ГЕНЕРАТОР
В этом
не-
поддержанный
Может иметь значение NULL
Не NULL
ПУСТОЙ УКАЗАТЕЛЬ
Ничего
Одинок
МНОГО
MAIN_
ГЕНЕРАТОР
иждивенец
Заостренная функцияне-
поддержанный
не-
поддержанный
   
Параметры функцииФункция UserdefСкалярные параметрыMAIN_
ГЕНЕРАТОР
В этом
не-
поддержанный
  В этом
min.. max
Параметры указателяMAIN_
ГЕНЕРАТОР
В этом
не-
поддержанный
Может иметь значение NULL
Не NULL
ПУСТОЙ УКАЗАТЕЛЬ
Ничего
Одинок
МНОГО
INIT Может быть
NULL max
МНОГО
Другие параметрыСм. тип параметра
Упрямая функцияСкалярный параметр отключенныйне-
поддержанный
   
Параметры указателя отключенный отключенный

Ничего

Одинок

МНОГО

SINGLE_CERTAIN_WRITE

MULTI_CERTAIN_WRITE

МНОГО
Заостренные параметрыПОСТОЯННЫЙне-
поддержанный
  ПОСТОЯННЫЙ
min.. max
Параметры Pointed constотключенныйне-
поддержанный
   
Возврат функцииФункция UserdefВернутьотключенныйне-
поддержанный
отключенныйотключенный 
Упрямая функцияСкалярный возвратПОСТОЯННЫЙне-
поддержанный
  ПОСТОЯННЫЙ
min.. max
Возврат указателяПОСТОЯННЫЙне-
поддержанный
Может иметь значение NULL
Не NULL
ПУСТОЙ УКАЗАТЕЛЬ

Ничего

Одинок

МНОГО

SINGLE_CERTAIN_WRITE

MULTI_CERTAIN_WRITE

ПОСТОЯННЫЙ
Может быть NULL MAX MULTI

Похожие темы