exponenta event banner

-regex-replace-rgx -regex-replace-fmt

Выполнять замены в директивах препроцессора

Синтаксис

-regex-replace-rgx matchFileName -regex-replace-fmt replacementFileName

Описание

-regex-replace-rgx matchFileName -regex-replace-fmt replacementFileName заменяет маркеры в директивах препроцессора для анализа Polyspace ®. Исходный код не изменился. Сопоставление маркера с помощью регулярного выражения в файлеmatchFileName и замените маркер с помощью замены в файле replacementFileName.

Используйте этот параметр только для замены или удаления маркеров в директивах препроцессора перед предварительной обработкой. Если маркер в исходном коде вызывает ошибку компиляции, его обычно можно заменить или удалить из предварительно обработанного кода. Используйте более удобный вариант Command/script to apply to preprocessed files (-post-preprocessing-command). Замены в предварительно обработанном коде нельзя выполнять только для маркеров в директивах препроцессора.

Если анализ выполняется из интерфейса пользователя (только для настольных продуктов Polyspace), на панели Конфигурация (Configuration) можно ввести этот параметр в поле Другое (Other). Посмотрите Other.

В интерфейсе пользователя укажите абсолютные пути к текстовым файлам с шаблонами поиска и замены.

Примеры

Предположим, что вы хотите заменить &_rom_beg в этом #define директива:

#define ROM_BEG_ADDR (uint16_t)(&_rom_beg)
и измените директиву следующим образом:
#define ROM_BEG_ADDR (0x4000u)

Укажите это регулярное выражение в файле match.txt:

^#define\s+ROM_BEG_ADDR\s+\(uint16_t\)\(\&_rom_beg\)
Эти элементы используются в регулярном выражении:

  • ^ утверждает положение в начале линии.

  • \s+ представляет один или несколько пробелов.

Знаки *, &, (и) в исходном выражении \. Полный список регулярных выражений см. в документации Perl.

Укажите замену в файле replace.txt.

#define ROM_BEG_ADDR \(0x4000u\)

Укажите два текстовых файла во время анализа с помощью опций -regex-replace-rgx и -regex-replace-fmt:

  • Поиск ошибок:

    polyspace-bug-finder -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt
  • Проверка кода:

    polyspace-code-prover -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt
  • Сервер поиска ошибок:

    polyspace-bug-finder-server -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt
  • Сервер проверки кода:

    polyspace-code-prover-server -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt

Совет

Если в качестве расширений кода в IDE используется Polyspace, введите эту опцию в файл опций анализа. См. файл параметров.