Command/script to apply to preprocessed files (-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 - источники file_name - "отправьте команду предварительной обработки" 'pwd '/replace_keyword.pl
Пример в Linux (Программа автоматического доказательства Кода): Polyspace Code Prover - источники file_name - "отправьте команду предварительной обработки" 'pwd '/replace_keyword.pl
Пример в Linux (Сервер Средства поиска Ошибки): сервер средства поиска ошибки полипробела - источники file_name - "отправьте команду предварительной обработки" 'pwd '/replace_keyword.pl
Пример в Linux (Сервер Программы автоматического доказательства Кода): сервер программы автоматического доказательства полипробела кода - источники file_name - "отправьте команду предварительной обработки" 'pwd '/replace_keyword.pl
Пример в Windows: Polyspace Bug Finder - источники file_name - "отправьте команду предварительной обработки" "C:\Program Files\MATLAB\R2015b\sys\perl\win32\bin\perl.exe" "C:\My_Scripts\replace_keyword.pl"

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