Этот пример показывает, как создать пользовательский файл правил кодирования. Можно использовать этот файл, чтобы проверять имена или текстовые шаблоны в исходном коде против пользовательских правил, которые вы задаете. Для каждого правила вы задаете шаблон в форме регулярного выражения. Программное обеспечение сравнивает шаблон с идентификаторами в исходном коде и определяет, нарушено ли пользовательское правило.
Пример использует следующий код, сохраненный в файле printInitialValue.c
:
#include <stdio.h> typedef struct { int a; int b; } collection; void main() { collection myCollection= {0,0}; printf("Initial values in the collection are %d and %d.",myCollection.a,myCollection.b); }
Создайте проект Polyspace®. Добавьте printInitialValue.c
в проект.
На панели Configuration выберите Coding Standards & Code Metrics. Выберите поле Check custom rules.
Щелкнуть.
Окно Findings selection открывается, отображая на левой панели все поддержки Polyspace стандартов кодирования, и с подсвеченным узлом Custom.
Задайте правила проверять на на правой панели.
Расширьте узел 4 Structs. Для опции 4.3 All struct fields must follow the specified pattern:
Заголовок столбцов | Действие |
---|---|
Status | Выбрать. |
Convention | Введите All struct fields must begin with s_ and have capital letters or digits |
Pattern | Введите s_[A-Z0-9_]+ |
Comment | Оставьте незаполненный. Этот столбец для комментариев, которые появляются в одном только файле правил кодирования. |
Сохраните файл и запустите анализ. На панели Results List вы видите два нарушения правила 4.3. Выберите первое нарушение.
На панели Source строка отмечен int a;
.
На панели Result Details вы видите сообщение об ошибке, что вы вошли, All struct fields must begin with s_ and have capital letters
Щелкните правой кнопкой по панели Source и выберите Open Editor. Файл printInitialValue.c
открывается в панели Code Editor или редакторе внешнего текста в зависимости от вашего Preferences.
В файле замените все экземпляры a
с s_A
и b
с s_B
. Повторно выполните анализ.
Нарушения пользовательского правила больше не появляются на панели Results List.
Создайте кодирующий стандартный конфигурационный файл. Можно начать с файла шаблона StandardsConfiguration.xml
, обеспеченный в
или polyspaceroot\polyspace\examples\cxx\Bug_Finder_Example\sources
. Здесь, polyspaceroot\polyspace\examples\cxx\Code_Prover_Example\sources
является папкой установки десктопных решений Polyspace или серверных продуктов. Например, для десктопных решений, папкой установки может быть polyspaceroot
C:\Program Files\Polyspace\R2019a
.
Чтобы включить пользовательское правило 4.3, введите следующее в конфигурационный файл:
<standard name="CUSTOM RULES"> ... <section name="4 Structures"> ... <check id="4.3" state="on"> <convention>All struct fields must begin with s_ and have capital letters or digits</convention> <pattern>s_[A-Z0-9_]+</pattern> <comment># Issue when structure field name does not begin with c_</comment> </check> ... </section> ... </standard>
Обеспечьте этот файл в качестве аргумента для опции Check custom rules (-custom-rules)
во время анализа. Например, если текстовый файл называют codingStandard.xml
для анализа с Polyspace Code Prover™ Server™, введите:
polyspace-code-prover-server -sources file -custom-rules codingStandard.xml