В этом примере показано, как создать пользовательское кодирование, управляет файл. Можно использовать этот файл, чтобы проверять имена или текстовые шаблоны в исходном коде против пользовательских правил, которые вы задаете. Для каждого правила вы задаете шаблон в форме регулярного выражения. Программное обеспечение сравнивает шаблон с идентификаторами в исходном коде и определяет, нарушено ли пользовательское правило.
Пример использует следующий код, сохраненный в файле 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.
![]()
С десктопными решениями Polyspace можно создать XML-файл стандарта кодирования в пользовательском интерфейсе и затем использовать этот файл для анализа командной строки. Предоставьте этому XML-файлу опцию Set checkers by file (-checkers-selection-file).
С Серверными продуктами Polyspace необходимо создать стандарт кодирования XML с нуля. Сделайте перезаписываемую копию файла custom_rules.xml в и выключите правила с помощью записей в XML-файле (все правила из стандарта включены в шаблоне). Здесь, polyspaceserverroot\help\toolbox\polyspace_bug_finder_server\examples\coding_standards_XML корневая папка установки для Серверных продуктов Polyspace, например, polyspaceserverrootC:\Program Files\Polyspace Server\R2019a.
Например, для пользовательского правила 4.3, которое будет отключено, конфигурационный файл должен содержать эти линии:
<standard name="CUSTOM RULES">
...
<section name="4 Structs">
...
<check id="4.3" state="off">
</check>
...
</section>
...
</standard>Обеспечьте этот файл в качестве аргумента для опции Set checkers by file (-checkers-selection-file) во время анализа, наряду с опцией Check custom rules (-custom-rules). Например, для пользовательских правил, сверяющихся с Polyspace Code Prover™ Server™, введите:
polyspace-code-prover-server -sources file -custom-rules from-file -checkers-selection-file custom_rules.xml
![]()