polyspaceAutosar

Запустите Polyspace Code Prover по реализации кода программных компонентов AUTOSAR с помощью скриптов MATLAB

Описание

пример

[status, msg] = polyspaceAutosar('-create-project',projectFolder,'-arxml-dir',arxmlFolder,'-sources-dir',codeFolder,options) проверяет реализацию кода программных компонентов AUTOSAR на наличие ошибок времени выполнения и нарушение ограничений данных в соответствующих спецификациях AUTOSAR XML. Анализ анализирует спецификации AUTOSAR XML (.arxml файлы) в arxmlFolder, модулирует реализацию кода (.c файлы) в codeFolder на основе спецификаций и запускает Code Prover на каждом модуле для проверок. Результаты Code Prover хранятся в projectFolder. После анализа можно открыть проект psar_project.psprj от projectFolder в Polyspace® пользовательский интерфейс или файл psar_project.xhtml в веб-браузере. Результаты для каждого программного компонента можно просмотреть по отдельности.

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

[status, msg] = polyspaceAutosar('-update-project',prevProjectFile,options) обновляет результаты анализа Code Prover на основе изменений в файлах ARXML или исходном коде C с момента последнего анализа. В обновлении используется XHTML- файла prevProjectFile из предыдущего анализа и повторного анализа только реализация кода программных компонентов, которые изменились со времени этого анализа.

Для устранения неполадок можно использовать дополнительные опции.

[status, msg] = polyspaceAutosar('-update-and-clean-project',prevProjectFile,options) обновляет результаты анализа Code Prover на основе изменений в файлах ARXML или исходном коде C с момента последнего анализа. Обновление повторно анализирует только реализацию кода программных компонентов, которая изменилась со времени предыдущего анализа. Чистое обновление также удаляет информацию о программных компонентах, которые устарели. Например, если вы используете дополнительную опцию, чтобы форсировать обновление для определенных программных компонентов, и другие SWC-ы также изменились, чистое обновление удаляет эти другие SWC-ы из проекта Polyspace.

Для устранения неполадок можно использовать дополнительные опции.

[status, msg, out] = polyspaceAutosar(___) запускает анализ Code Prover, используя те же опции, что и ранее. Выход вместо появления в MATLAB® Командное окно, перенаправляется в вектор символов out.

Примечание

Перед запуском Polyspace из MATLAB необходимо связать установки Polyspace и MATLAB. См. «Интеграция Polyspace с MATLAB и Simulink».

Примеры

свернуть все

Предположим, ваши файлы ARXML находятся в папке arxml и ваши исходные файлы C в папке code в текущей папке.

Запустите Code Prover для всех программных компонентов, определенных в ваших файлах ARXML. Сохраните результаты в папке polyspace-project во временной папке.

Папка не должна существовать. Если предыдущие результаты существуют в этой папке, можно обновить эти результаты. При обновлении обновляются только исходные файлы, которые изменились с момента предыдущего запуска.

exampleDir = fullfile(polyspaceroot,'help',...
    'toolbox','codeprover','examples','polyspace_autosar');
arxmlDir = fullfile(exampleDir, 'arxml');
sourceDir = fullfile(exampleDir, 'code');

tempDir = tempdir;
projectDir = fullfile(tempDir, 'polyspace-project');
prevProjectFile = fullfile(projectDir, 'psar_project.xhtml');

% Update project file if it already exists, else create new project
projectDirAlreadyExists = isfolder(projectDir);

if projectDirAlreadyExists
    [status, msg] = polyspaceAutosar('-update-project', ...
        prevProjectFile);
else
    [status, msg] = polyspaceAutosar('-create-project', projectDir, ...
    '-arxml-dir', arxmlDir, ...
    '-sources-dir', sourceDir);
end

Входные параметры

свернуть все

Имя папки, заданное как вектор символов. Если папка существует, она должна быть пустой.

После анализа папка содержит два файла проекта psar_project.psprj и psar_project.xhtml.

  • Чтобы увидеть результаты, откройте файл проекта psar_project.psprj в пользовательском интерфейсе Polyspace или файле psar_project.xhtml в веб-браузере.

  • Для последующих обновлений с использованием скриптов MATLAB используйте файл проекта psar_project.xhtml.

Смотрите также Обзор результатов Polyspace на коде AUTOSAR.

Пример: 'C:\Polyspace_Projects\proj_swc1'

Имя папки, заданное как вектор символов.

UNC- путей не поддерживаются для имени папки.

Пример: 'C:\arxml_swc1'

Имя папки, заданное как вектор символов.

UNC- путей не поддерживаются для имени папки.

Пример: 'C:\code_swc1'

Путь к ранее созданному файлу проекта psar_project.xhtml, заданный как вектор символов.

Пример: 'C:\Polyspace_Projects\proj1\psar_project.xhtml'

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

Задайте каждую опцию как вектор символов, затем значение опцию как отдельный вектор символов. Например, можно задать файл опций opts.txt при помощи синтаксиса polyspaceAutosar(...,'-options-file','opts.txt').

Общие опции

ОпцияЗначениеОписание
'-verbose' 

Сохраните дополнительную информацию о различных фазах выполнения команды (подробный режим). Файл psar_project.log и другие вспомогательные файлы хранят эту дополнительную информацию.

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

'-options-file'Имя файла опций, например 'opts.txt'.

Используйте файл опций для дополнения или замены опций командной строки. В файле опций задайте каждую опцию в отдельной линии. Начните линию с # для указания комментариев.

Файл опций opts.txt может выглядеть следующим образом:

# Store Polyspace results
-create-project polyspace
# ARXML Folder
-arxml-dir arxml
# SOURCE Folder
-sources-dir code 

Если опция, непосредственно заданная в polyspaceAutosar функция конфликтует с опцией в файле options, используется непосредственно заданная опция.

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

Опции для контроля обновления проекта

Если вы обновляете проект, по умолчанию результаты анализа обновляются для всех поведений AUTOSAR SWC в отношении любых изменений в файлах ARXML или исходном коде C с момента последнего анализа. Управляйте обновлением с помощью этих опций.

ОпцияЗначениеОписание
'-autosar-behavior'Полное имя SWC-поведения, например 'pkg.component.bhv'.

Проверяйте реализацию программных компонентов, внутреннее поведение которых задано. Анализ по умолчанию рассматривает все программные компоненты, существующие в спецификациях ARXML.

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

Для образца:

  • Чтобы указать программный компонент, внутренне поведение которого имеет полное имя pkg.component.bhv, использовать:

    polyspaceAutosar(...,
    '-autosar-behavior',...
    'pkg.component.bhv')

  • Чтобы задать программные компоненты, внутреннее поведение которых имеет полные имена, начинающиеся с pkg.component, использовать:

    polyspaceAutosar(...,
    '-autosar-behavior',...
    'pkg.component\..*')
    The \. представляет диафрагму имен пакетов . (точка) и .* представляет любое количество символов.

'-do-not-update-autosar-prove-environment' 

Не считывайте спецификации ARXML. Используйте спецификации ARXML, сохраненные в предыдущем анализе.

Используйте эту опцию во время обновления проекта, чтобы сравнить код с предыдущими спецификациями. Если вы не используете эту опцию, обновления проекта снова считывают все спецификации ARXML.

'-do-not-update-extract-code' 

Не считывайте исходный код C. Используйте исходный код, сохраненный из предыдущего анализа.

Используйте эту опцию во время обновления проекта, чтобы сравнить предыдущий исходный код со спецификациями ARXML. Если вы не используете эту опцию, в обновлениях проекта учитываются все изменения исходного кода с момента предыдущего анализа.

'-do-not-update-verification' 

Ознакомьтесь только со спецификациями ARXML и реализацией кода С, но не запускайте анализ Code Prover.

Используйте эту опцию во время обновления проекта, чтобы исследовать ошибки, внесенные в спецификации ARXML или ошибки компиляции, введенные в исходный код. Можно сначала устранить эти проблемы, а затем запустить анализ Code Prover.

Опции для управления синтаксическим анализом спецификаций ARXML

ОпцияЗначениеОписание
'-autosar-datatype'Полное квалифицированное имя типа данных, например 'pkg.datatypes.type'

Определение импорта заданных типов данных AUTOSAR. Анализ по умолчанию импортирует только типы данных, заданные во внутреннем поведении проверяемых компонентов программного обеспечения.

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

Для образца:

  • Чтобы задать тип данных с полным именем pkg.datatypes.type, использовать:

    polyspaceAutosar(...,
    '-autosar-datatype',...
    'pkg.datatypes.type')

  • Чтобы задать типы данных с полными именами, начинающимися с pkg.datatypes, использовать:

    polyspaceAutosar(...,
    '-autosar-datatype',...
    'pkg.datatypes\..*')
    The \. представляет диафрагму имен пакетов . (точка) и .* представляет любое количество символов.

  • Чтобы принудительно импортировать все типы данных, используйте:

    polyspaceAutosar(...,
    '-autosar-datatype',...
    '.*\..*')

'-Eautosar-xmlReaderSameUuidForDifferentElements'

'-Eno-autosar-xmlReaderSameUuidForDifferentElements'

 

Если несколько элементов спецификаций ARXML имеют одинаковый универсальный уникальный идентификатор (UUID), используйте эти опции, чтобы переключаться между предупреждением и ошибкой.

Анализ по умолчанию останавливается с ошибкой, если эта проблема происходит. Для преобразования в предупреждение используйте '-Eno-autosar-xmlReaderSameUuidForDifferentElements'. Для конфликтующих UUID, анализ сохраняет последний элемент read и продолжает с предупреждением.

Последующие исполнения продолжают использовать режим предупреждения. Чтобы вернуться к ошибке, используйте '-Eautosar-xmlReaderSameUuidForDifferentElements'.

'-Eautosar-xmlReaderTooManyUuids'

'-Eno-autosar-xmlReaderTooManyUuids'

 

Если тот же элемент спецификаций ARXML имеет другие универсально-уникальные идентификаторы (UUID), используйте эти опции, чтобы переключаться между предупреждением и ошибкой.

Анализ по умолчанию останавливается с ошибкой, если эта проблема происходит. Для преобразования в предупреждение используйте '-Eno-autosar-xmlReaderTooManyUuids'. Для конфликтующих UUID, анализ сохраняет последний элемент read и продолжает с предупреждением.

Последующие исполнения продолжают использовать режим предупреждения. Чтобы вернуться к ошибке, используйте '-Eautosar-xmlReaderTooManyUuids'.

Опции для контроля чтения исходного кода C

ОпцияЗначениеОписание
'-include'Файл с типом данных и определениями макросов.

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

Добавьте тип данных и определения макросов к файлу. Эти определения добавляются к файлу заголовка Rte_Type.h который используется в анализе. Файл, который вы предоставляете, не должен сам называться Rte_Type.h.

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

Если вы дополнительно задаете макросы или не определяете их с помощью опций '-D' или '-U', для определений, которые конфликтуют с таковыми в USER_RTE_TYPE_H, а -D или -U преобладают спецификации.

'-I'Папка, содержащая заголовочные файлы.

Укажите папки, содержащие заголовочные файлы. Анализ ищет #include-d файлы в этой папке. Папка должна быть подпапкой папки исходного кода.

Повторите опцию для нескольких папок. Анализ ищет заголовочные файлы в этих папках в том порядке, в котором вы их задаете.

Если необходимо указать папки, которые не находятся в папке исходного кода, используйте опцию:

polyspaceAutosar(...,
 '-extra-project-options','-I INCLUDE_FOLDER')

'-D'Имя макроса, например '_WIN32.

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

Например, если вы задаете:

polyspaceAutosar(...,
 '-D','_WIN32')
условный процессор препроцессора #ifdef _WIN32 успешно завершается, и выполняется соответствующая ветвь.

'-U'Имя макроса, например '_WIN32.

Укажите макросы, которые анализ должен считать неопределенными.

Например, если вы задаете:

polyspaceAutosar(...,
 '-U','_WIN32')
условный процессор препроцессора #ifndef _WIN32 успешно завершается, и выполняется соответствующая ветвь.

Опции для кода системы управления проверок Prover

ОпцияЗначениеОписание
'-extra-project-options'Разделенный пробелом список опций.

Задайте дополнительные опции для анализа Code Prover. Заданные опции применяются не к анализу ARXML или извлечению кода, а только к последующему анализу Code Prover.

Этот метод используется для задания опций анализа, которые используются в анализе, отличном от AUTOSAR Code Prover. См. Опции анализа в Polyspace Code Prover.

Например, можно хотеть задать компилятор и целевую архитектуру. По умолчанию при компиляции проектов, созданных из спецификаций AUTOSAR, используются gnu4.7 компилятор и архитектура i386.

Чтобы задать компилятор visual11.0 с x86_64 архитектурой, введите эту опцию:

polyspaceAutosar(...,
 '-extra-project-options','-compiler visual11.0 -target x86_64')
См. также Compiler (-compiler) и Target processor type (-target).

'-extra-options-file'Файл с опциями Polyspace.

Укажите дополнительные опции для анализа Code Prover в файле параметров. Заданные опции применяются не к анализу ARXML или извлечению кода, а только к последующему анализу Code Prover.

Например, можно проследить команду build, чтобы собрать опции компилятора, определения макросов и пути, чтобы включить папки, и предоставить эту информацию в файл options для анализа реализации кода компонентов программного обеспечения AUTOSAR.

  1. Проследите свою команду сборки (для образца, make) с polyspaceConfigure и сгенерируйте файл опций для последующего анализа Code Prover. Подавьте включение источников в файл опций с -no-sources опция.

    polyspaceConfigure -output-options-file options.txt -no-sources make
  2. Запустите Code Prover на коде AUTOSAR с polyspace-autosar. Укажите папку ARXML, исходные папки и другие опции. В сложение предоставьте ранее сгенерированный файл опций с -extra-options-file опция.

    polyspaceAutosar(...,
     '-extra-options-file','options.txt')

'-show-prove'Полное имя SWC-поведения, например 'pkg.component.bhv'.

После анализа откройте результаты для определенного программного компонента, внутреннее поведение которого задано.

Выходные аргументы

свернуть все

Логический флаг, указывающий, выполнялся ли анализ до своего завершения. Если анализ завершен, возвращаемое значение равняется 0, в противном случае это ненулевое значение.

Если вы видите ненулевое значение, проверяйте второй выходной аргумент polyspaceAutosar для сообщений об ошибке.

Можно также искать сообщения об ошибке в файле psar_project.xhtml в папке проекта. Можно использовать этот файл XHTML, чтобы определить, какие программные компоненты были проанализированы.

Смотрите Поиск и устранение проблем с анализом Polyspace кода AUTOSAR.

Журнал анализа, заданный как структура с этими полями:

Тип сообщения, возвращенный как один из трёх векторов символов:

  • 'info': Информация, такая как текущий этап анализа.

  • 'warning': Предупреждения, которые не останавливают анализ, но могут вызвать ошибки позже.

  • 'error': Ошибки, которые могут остановить весь анализ или анализ конкретных компонентов программного обеспечения.

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

% Convert to table for logical indexing
msgTable = struct2table(msg);

% Check which messages have the type 'error'
errorMatches = (strcmp(msgTable.Criticity, 'error'));

% Read the error messages to another table
errorMessage = msgTable(errorMatches, :);

Содержимое сообщения, возвращаемое как вектор символов.

Пример: 'Start Extract user-implementation for Behavior ''pkg.tst002.swc001.bhv001''...'

Журнал анализа, возвращенный как вектор символов.

Введенный в R2018b