exponenta event banner

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 на основе спецификаций и запускает программу проверки кода для каждого модуля для проверок. Результаты проверки кода хранятся в projectFolder. После анализа можно открыть проект. psar_project.psprj от projectFolder в интерфейсе пользователя Polyspace ® или файле psar_project.xhtml в веб-браузере. Результаты для каждого компонента программного обеспечения можно просмотреть по отдельности.

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

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

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

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

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

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

Примечание

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

Примеры

свернуть все

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

Запустите программу проверки кода для всех программных компонентов, определенных в файлах 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.

См. также Обзор результатов работы с полиспейсом в коде 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 функция конфликтует с опцией в файле опций, используется непосредственно указанная опция.

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

Параметры управления обновлением проекта

При обновлении проекта по умолчанию результаты анализа обновляются для всех вариантов поведения SWC AUTOSAR с учетом любых изменений в файлах 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\..*')
    \. представляет разделитель имен пакетов . (точка) и .* представляет любое количество символов.

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

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

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

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

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

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

'-do-not-update-verification' 

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

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

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

ВыборСтоимостьОписание
'-autosar-datatype'Полное имя типа данных, например, 'pkg.datatypes.type'

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

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

Например:

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

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

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

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

  • Для принудительного импорта всех типов данных используйте:

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

'-Eautosar-xmlReaderSameUuidForDifferentElements'

'-Eno-autosar-xmlReaderSameUuidForDifferentElements'

 

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

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

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

'-Eautosar-xmlReaderTooManyUuids'

'-Eno-autosar-xmlReaderTooManyUuids'

 

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

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

Последующие выполнения продолжают использовать режим предупреждения. Чтобы вернуться к ошибке, используйте '-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 успешно и выполняется соответствующая ветвь.

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

ВыборСтоимостьОписание
'-extra-project-options'Разделенный пространством список опций.

Укажите дополнительные параметры для анализа программы проверки кода. Указанные параметры применяются не к синтаксическому анализу ARXML или извлечению кода, а только к последующему анализу программы проверки кода.

Этот метод используется для определения параметров анализа, используемых в анализе не-AUTOSAR Code Prover. См. раздел Параметры анализа в программе проверки кода Polyspace.

Например, может потребоваться указать компилятор и целевую архитектуру. По умолчанию компиляция проектов, созданных из спецификаций 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.

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

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

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

    polyspaceConfigure -output-options-file options.txt -no-sources make
  2. Выполнить проверку кода для кода 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 можно использовать для определения компонентов программного обеспечения, которые были проанализированы.

См. раздел Устранение неполадок при анализе в пространстве кода 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