-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:

  • Bug Finder:

    polyspace-bug-finder -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt
  • Code Prover:

    polyspace-code-prover -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt
  • Сервер Bug Finder:

    polyspace-bug-finder-server -sources filename -regex-replace-rgx match.txt -regex-replace-fmt replace.txt
  • Код Code Prover:

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

Совет

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