- 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*)(&_rom_beg)
и измените директиву к:
#define ROM_BEG_ADDR (0x4000u)

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

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

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

  • \s* представляет нуль или больше пробельных символов.

  • \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