Сделайте замены в директивах препроцессору
-regex-replace-rgx
matchFileName
-regex-replace-fmt replacementFileName
-regex-replace-rgx
лексемы замен в директивах препроцессору в целях анализа Polyspace®. Код первоисточника неизменен. Вы совпадаете с лексемой с помощью регулярного выражения в файле matchFileName
-regex-replace-fmt replacementFileName
и замените лексему с помощью замены в файле 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