Эта таблица приводит все элементы, атрибуты и значения XML, который можно использовать, чтобы задать формат аннотации и сопоставить его с синтаксисом аннотации Polyspace. Для примера того, как отредактировать XML, чтобы задать синтаксис аннотации, смотрите, Задают Пользовательский Формат Аннотации.
| Элемент | Атрибут | Использование | Значение |
|---|---|---|---|
Annotations | Group | Необходимый | Определяемая пользователем строка. Например, "Пользовательские Аннотации" |
Expressions | Search_For_Keywords | Необходимый | Определяемая пользователем строка. Эта строка является ключевым словом, которое вы включаете в шаблон своего синтаксиса аннотации, чтобы помочь идентифицировать его. Например, "myKeyword" |
Separator_Result_Name | Необходимый | Определяемая пользователем строка. Эта строка является диафрагмой, когда вы перечисляете несколько имен результата Polyspace в той же аннотации. Например"", | |
Separator_Family_And_Result_Name | Дополнительный | Определяемая пользователем строка. Эта строка является диафрагмой, когда вы перечисляете несколько семейств результатов Polyspace в той же аннотации. Например, "" | |
Separator_Family | Дополнительный | Определяемая пользователем строка. Эта строка является диафрагмой, когда вы перечисляете Polyspace, заканчивается семейство и приводит имя к той же аннотации. Например, ":" | |
Expression | Mode | Необходимый | SAME_LINE |
GOTO_INCREMENT
| |||
BEGIN
| |||
END
| |||
END_ALL
| |||
Аннотация применяется к следующей строке кода. Комментарии и пустые строки проигнорированы. | |||
GOTO_LABEL
| |||
LABEL
| |||
XML_START
| |||
Аннотация для этого выражения должна быть на одной строке. | |||
XML_END
| |||
Regex | Необходимый | Строка поиска регулярного выражения, которая совпадает с шаблоном вашей аннотации. | |
Rule_Identifier_Position | Необходимый, кроме тех случаев, когда вы устанавливаете Mode="END_ALL" or "LABEL" | Целое число. Целочисленное значение этого атрибута соответствует количеству вводных круглых скобок в регулярном выражении перед соответствующим поисковым выражением. | |
Increment_Position | Требуемый только, когда вы устанавливаете Mode="GOTO_INCREMENT" | Целое число. Целочисленное значение этого атрибута соответствует количеству вводных круглых скобок в регулярном выражении перед соответствующим поисковым выражением. | |
Status_Position | Дополнительный | Целое число. Целочисленное значение этого атрибута соответствует количеству вводных круглых скобок в регулярном выражении перед соответствующим поисковым выражением. | |
Severity_Position | Дополнительный | Целое число. Целочисленное значение этого атрибута соответствует количеству вводных круглых скобок в регулярном выражении перед соответствующим поисковым выражением. | |
Comment_Position
| Дополнительный | Целое число. Целочисленное значение этого атрибута соответствует количеству вводных круглых скобок в регулярном выражении перед соответствующим поисковым выражением. | |
Label_Position | Требуемый только, когда вы устанавливаете Mode="GOTO_LABEL" or "LABEL" | Целое число. Целочисленное значение этого атрибута соответствует количеству вводных круглых скобок в регулярном выражении перед соответствующим поисковым выражением. | |
Case_Insensitive
| Дополнительный | TRUE или FALSE. Когда вы не объявляете этот атрибут, значение по умолчанию является ложным. | |
Is_Pragma
| Дополнительный | TRUE или FALSE. Когда вы не объявляете этот атрибут, значение по умолчанию является ложным. Установите этот атрибут на истину, если вы хотите объявить свою аннотацию с помощью прагмы вместо комментария. | |
Applies_Also_On_Same_Line | Дополнительный | TRUE или FALSE. Когда вы не объявляете этот атрибут, значение по умолчанию верно. Используйте этот атрибут, чтобы позволить аннотациям со старым синтаксисом Polyspace применяться на ту же строку кода. | |
Mapping | 'none' | 'none' | 'none' |
Result_Name_Mapping | Rule_Identifier | Необходимый | Определяемый пользователем |
Family | Необходимый | Соответствует семейству результатов Polyspace. Для списка позволенных значений смотрите позволенные значения. | |
Result_Name | Необходимый | Соответствует именам результата Polyspace. Для списка позволенных значений смотрите позволенные значения. |
Этот пример кода покрывает некоторые реже используемые атрибуты для определения аннотаций в XML.
<?xml version="1.0" encoding="UTF-8"?>
<Annotations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="annotations_xml_schema.xsd"
Group="XML Template">
<Expressions Separator_Result_Name=","
Search_For_Keywords="myKeyword">
<Expression Mode="GOTO_LABEL"
Regex="(\A|\W)myKeyword\s+S\s+(\d+(\s*,\s*\d+)*)\s+([a-zA-Z_-]\w+)"
Rule_Identifier_Position="2"
Label_Position="4"
/>
<Expression Mode="LABEL"
Regex="(\A|\W)myKeyword\s+L:(\w+)"
Label_Position="2"
/>
<!-- Annotation applies starting current line until
next declaration of label word "myLabel"
Example:
code; // myKeyword S 100 myLabel
...
more code;
// myKeyword L myLabel
-->
<Expression Mode="BEGIN"
Regex="#\s*pragma\s+myKeyword_MESSAGES_ON\s+(\w+)"
Rule_Identifier_Position="1"
Is_Pragma="true"
/>
<!-- Annotation declared with pragma instead of comment
Example:#pragma myKeyword_MESSAGES_ON 100 -->
<!-- Comment declaration with XML format-->
<!-- XML_START must be declared before XML_CONTENT -->
<Expression Mode="XML_START"
Regex="<\s*myKeyword_COMMENT\s*>"
/>
<!-- Example: <myKeyword_COMMENT> -->
<Expression Mode="XML_CONTENT"
Regex="<\s*(\d*)\s*>(((?![*]/)(?!<).)*)</\s*(\d*)\s*>"
Rule_Identifier_Position="1"
Comment_Position="2"
/>
<!-- Example: <100>This is my comment</100>
XML_CONTENT must be declare on a single line.
<100>This is my comment
</100>
is incorrect.
-->
<Expression Mode="XML_END"
Regex="</\s*myKeyword_COMMENT\s*>"
/>
<!-- Example: </myKeyword_COMMENT> -->
</Expressions>
<Mapping>
<Result_Name_Mapping Rule_Identifier="100" Family="MISRA-C" Result_Name="4.1"/>
</Mapping>
</Annotations> |