Применить пользовательские аннотации кода к результатам анализа Polyspace
-xml-annotations-description
file_path
-xml-annotations-description
использует синтаксис аннотации, заданный в XML- файле, расположенном в file_path
file_path
интерпретировать аннотации кода в исходных файлах. Можно использовать XML- файл, чтобы задать синтаксис аннотации и сопоставить его с Polyspace® синтаксис аннотации. Когда вы запускаете анализ с помощью этой опции, можно обосновать и скрыть результаты с помощью аннотаций, которые используют ваш синтаксис. Если вы запускаете Polyspace в командной строке, file_path
- абсолютный путь или путь относительно папки, из которой вы запускаете команду. Если вы запускаете Polyspace через пользовательский интерфейс, file_path
- абсолютный путь.
Если анализ выполняется через пользовательский интерфейс, можно ввести эту опцию в поле Other под узлом Advanced Settings на панели Configuration. См. Other
.
Если вы используете Polyspace в качестве расширений You Code в IDE, введите эту опцию в файл опций анализа. См. файл опций.
Если у вас есть аннотации из предыдущих рассмотрений кода, можно импортировать эти аннотации в Polyspace. Вам не нужно просматривать и обосновывать результаты, которые вы уже аннотировали. Точно так же, если ваши комментарии кода должны соответствовать определенному формату, можно сопоставить и импортировать этот формат в Polyspace.
Предположим, что вы ранее просмотрели исходный файл zero_div.c
содержит следующий код и обосновывает некоторые MISRA C®: нарушения 2012 года при помощи пользовательских аннотаций.
#include <stdio.h> /* Violation of Misra C:2012 rules 8.4 and 8.7 on the next line of code. */ int func(int p) //My_rule 50, 51 { int i; int j = 1; i = 1024 / (j - p); return i; } /* Violation of Misra C:2012 rule 8.4 on the next line of code */ int func2(void){ //My_rule 50 int x=func(2); return x; } |
Комментарии кода My_rule 50, 51
и My_rule 50
не используйте синтаксис аннотации Polyspace. Вместо этого используется соглашение, в котором все правила MISRA помещаются в один пронумерованный список. В этом списке правила 8.4 и 8.7 соответствуют цифрам 50 и 51.Вы можете проверить этот код на нарушения MISRA C: 2012, набрав команду:
Bug Finder:
polyspace-bug-finder -sources source_path -misra3 all
Code Prover:
polyspace-code-prover -sources source_path -misra3 all -main-generator
Сервер Bug Finder:
polyspace-bug-finder-server -sources source_path -misra3 all
Код Code Prover:
polyspace-code-prover-server -sources source_path -misra3 all -main-generator
source_path
- путь к zero_div.c
.
Аннотированные нарушения отображаются на панели Results List. Вы должны пересмотреть и обосновать их снова.
Этот XML- пример определяет формат аннотации, используемый в zero_div.c
и преобразует его в синтаксис аннотации Polyspace:
Формат аннотации является ключевым словом My_rule
, за которым следуют пространство и один или несколько алфавитно-цифровых идентификаторов правил, разделенных запятыми.
Идентификаторы правил 50 и 51 сопоставлены с правилами MISRA C: 2012 8.4 и 8.7 соответственно. В отображении используется синтаксис аннотации Polyspace.
<?xml version="1.0" encoding="UTF-8"?> <Annotations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="annotations_xml_schema.xsd" Group="exampleCustomAnnotation"> <Expressions Search_For_Keywords="My_rule" Separator_Result_Name="," > <!-- This section defines the annotation syntax format --> <Expression Mode="SAME_LINE" Regex="My_rule\s(\w+(\s*,\s*\w+)*)" Rule_Identifier_Position="1" /> </Expressions> <!-- This section maps the user annotation to the Polyspace annotation syntax --> <Mapping> <Result_Name_Mapping Rule_Identifier="50" Family="MISRA-C3" Result_Name="8.4"/> <Result_Name_Mapping Rule_Identifier="51" Family="MISRA-C3" Result_Name="8.7"/> </Mapping> </Annotations> |
Чтобы импортировать существующие аннотации и применить их к соответствующим результатам Polyspace:
Скопируйте предыдущий пример кода в текстовый редактор и сохраните его на своем компьютере как annotations_description.xml
, например, в C:\Polyspace_workspace\annotations\
.
Перезапустите анализ на zero_div.c
при помощи команды:
Bug Finder:
polyspace-bug-finder -sources source_path -misra3 all ^ -xml-annotations-desription ^ C:\Polyspace_workspace\annotations\annotations_description.xml
Code Prover:
polyspace-code-prover -sources source_path -misra3 all ^ -main-generator -xml-annotations-desription ^ C:\Polyspace_workspace\annotations\annotations_description.xml
Сервер Bug Finder:
polyspace-bug-finder-server -sources source_path -misra3 all ^ -xml-annotations-desription ^ C:\Polyspace_workspace\annotations\annotations_description.xml
Код Code Prover:
polyspace-code-prover-server -sources source_path -misra3 all ^ -main-generator -xml-annotations-desription ^ C:\Polyspace_workspace\annotations\annotations_description.xml
Polyspace считает аннотированные результаты обоснованными и скрывает их в панели Results List.