В этой таблице перечислены все элементы, атрибуты и значения 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
| Дополнительный | Правда или ложь. Когда вы не объявляете этот атрибут, значение по умолчанию является false. | |
Is_Pragma
| Дополнительный | Правда или ложь. Когда вы не объявляете этот атрибут, значение по умолчанию является false. Установите для этого атрибута значение true, если требуется объявить аннотацию с помощью прагмы вместо комментария. | |
Applies_Also_On_Same_Line | Дополнительный | Правда или ложь. Когда вы не объявляете этот атрибут, значение по умолчанию является true. Используйте этот атрибут, чтобы включить применение аннотаций со старым синтаксисом Polyspace к той же строке кода. | |
Mapping | Ничего | Ничего | Ничего |
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> |