Команда/скрипт, чтобы примениться к предварительно обработанным файлам (-post-preprocessing-command)

Задайте команду или скрипт, чтобы работать на исходных файлах после предварительной обработки фазы анализа

Описание

Задайте команду или скрипт, чтобы работать на каждом исходном файле после предварительной обработки.

Установите опцию

Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Environment Settings.

Командная строка: Используйте опцию -post-preprocessing-command. Смотрите информацию о Командной строке.

Почему использование эта опция

Можно запустить скрипты на предварительно обработанных файлах, чтобы работать вокруг ошибок компиляции или неточностей анализа при хранении файлов первоисточника нетронутыми. Например, предположите, что Polyspace® не распознает специфичного для компилятора ключевого слова. Если вы уверены, что ключевое слово не важно для анализа, можно запустить скрипт Perl, чтобы удалить все экземпляры ключевого слова. Когда вы используете эту опцию, программное обеспечение удаляет ключевое слово из вашего предварительно обработанного кода, но сохраняет ваш оригинальный код нетронутым.

Используйте скрипт, только если существующие аналитические опции не удовлетворяют ваши требования. Например:

  • Для прямой замены одного ключевого слова с другим используйте опцию Preprocessor definitions (-D).

    Однако опция не позволяет поиск и замену, включающую регулярные выражения. Для регулярных выражений используйте скрипт.

  • Для отображения вашей библиотечной функции к стандартной библиотечной функции используйте опцию -function-behavior-specifications.

    Однако отображение поддержек опции только с подмножеством стандартных библиотечных функций. Чтобы сопоставить с неподдерживаемой функцией, используйте скрипт.

Если вы не уверены в удалении или заменяющий неподдерживаемое построение, не используйте эту опцию. Свяжитесь с MathWorks® Support для руководства.

Настройки

Никакое значение по умолчанию

Введите полный путь в команду или скрипт или нажатие кнопки, чтобы перейти к местоположению команды или скрипта. Этот скрипт выполняется перед верификацией.

Советы

  • Ваш скрипт должен быть разработан, чтобы обработать стандартный вывод от предварительной обработки и привести к ее результатам в соответствии с тем стандартным выводом.

  • Ваш скрипт должен сохранить количество строк в предварительно обработанном файле. Другими словами, это не должно добавлять или удалять целые строки к или из файла.

    При добавлении строки или удалении можно потенциально привести к некоторому непредсказуемому поведению на местоположении проверок и макросов в пользовательском интерфейсе Polyspace.

  • Для скрипта Perl, в Windows®, задают полный путь к исполняемому файлу Perl, сопровождаемому полным путем к скрипту.

    Например:

    • Чтобы задать команду Perl, которая заменяет все экземпляры ключевого слова far, введите polyspaceroot\sys\perl\win32\bin\perl.exe -p -e "s/far//g".

    • Чтобы задать скрипт Perl, replace_keyword.pl, который заменяет все экземпляры ключевого слова, вводит polyspaceroot\sys\perl\win32\bin\perl.exe absolute_path\replace_keyword.pl.

    Здесь, polyspaceroot является местоположением текущей установки Polyspace, такой как C:\Program Files\Polyspace\R2019a\, и absolute_path является местоположением скрипта Perl. Если пути содержат пробелы, используйте кавычки, чтобы заключить имена полного пути.

  • Используйте этот скрипт Perl в качестве шаблона. Скрипт удаляет все экземпляры ключевого слова far.

    #!/usr/bin/perl
    
    binmode STDOUT;
    
    # Process every line from STDIN until EOF
    while ($line = <STDIN>) 
    {
    
      # Remove far keyword
      $line =~ s/far//g;
      
      # Print the current processed line to STDOUT
      print $line;
    }

    Можно использовать регулярные выражения Perl, чтобы выполнить замены. Например, можно использовать следующие выражения.

    ВыражениеЗначение
    .Соответствия любой отдельный символ кроме новой строки
    [a-z0-9]         Соответствия любая одна буква в наборе a-z или цифра в наборе 0-9
    [^a-e]Соответствия любая одна буква не в наборе a-e
    \dСоответствия любая одна цифра
    \wСоответствия любой один буквенно-цифровой знак или _
    x?Соответствия 0 или 1 вхождение x
    x*Соответствия 0 или больше случаев x
    x+Соответствия 1 или более случаев x

    Для полного списка регулярных выражений см. документацию Perl.

  • Когда вы задаете эту опцию, Ассистент Компиляции автоматически отключен.

Информация о командной строке

Параметр: -post-preprocessing-command
Значение: Путь к исполняемому файлу или команде в кавычках
Никакое значение по умолчанию
Пример в Linux® (средство поиска ошибки): polyspace-bug-finder -sources file_name -post-preprocessing-command `pwd`/replace_keyword.pl
Пример в Linux (программа автоматического доказательства кода): polyspace-code-prover -sources file_name -post-preprocessing-command `pwd`/replace_keyword.pl
Пример в Linux (сервер средства поиска ошибки): polyspace-bug-finder-server -sources file_name -post-preprocessing-command `pwd`/replace_keyword.pl
Пример в Linux (сервер программы автоматического доказательства кода): polyspace-code-prover-server -sources file_name -post-preprocessing-command `pwd`/replace_keyword.pl
Пример в Windows: polyspace-bug-finder -sources file_name -post-preprocessing-command "C:\Program Files\MATLAB\R2015b\sys\perl\win32\bin\perl.exe" "C:\My_Scripts\replace_keyword.pl"

Обратите внимание на то, что в Windows, вы используете полный путь для исполняемого файла Perl.