В этом разделе описывается основанный на компонентах подход к проверке кода AUTOSAR с Polyspace. Для подхода интегрирования анализа смотрите Выбор между основанным на компонентах и Интегрировании анализом кода AUTOSAR с Polyspace.
Для анализа реализации кода программных компонентов AUTOSAR, Polyspace® анализирует спецификации AUTOSAR XML, обнаруживает соответствующую реализацию кода, компилирует этот код и запускает статический анализ, чтобы обнаружить ошибки времени выполнения или несоответствие между кодом и спецификациями. Если ошибка возникает на любом из этих шагов, вы не видите результаты анализа для программного компонента, содержащего ошибку. В этом разделе показано, как диагностировать и исправить эти ошибки.
Для результатов анализа звука Code Prover требует, чтобы ваш AUTOSAR XML был хорошо сформирован, и ваш код не должен иметь ошибок компиляции. Например, два элемента в AUTOSAR XML не должны иметь одинакового универсального уникального идентификатора (UUID). Вы можете использовать другие инструменты, чтобы гарантировать хорошо сформированные ARXML и код без ошибок компиляции. В дополнение к этим инструментам можно использовать ошибки на фазах анализа AUTOSAR XML и извлечения кода анализа Code Prover, чтобы найти проблемы в XML и коде.
После анализа откройте файл psar_project.xhtml
в веб-браузере. Файл находится в папке проекта. Проверьте общее состояние проекта и выполните развертку до определенных программных компонентов, имеющих проблемы. Если вы создаете проект в пользовательском интерфейсе Polyspace, вкладка Project Status показывает этот HTML файла после создания проекта.
Если анализ завершен успешно, появляется сообщение о состоянии, подобное этому.
Статус проекта Проект отмечен на Sat Dec 23 2017 19:37:53 GMT-0500 (восточное стандартное время) после завершения следующей последовательности состояний в 38.25с:
В текущем состоянии обрабатываются 2 поведения AUTOSAR, 2 с извлеченным кодом реализации и 2 с сгенерированным результатом code-prover. |
Сообщение показывает, сколько программных компонентов было обнаружено в спецификациях ARXML, обнаружено в реализации кода и успешно проанализировано с помощью Code Prover.
Если вы создаете проект в пользовательском интерфейсе Polyspace, анализ выполняется позже. Статус проекта показывает только первые четыре шага.
Если при анализе AUTOSAR XML возникает ошибка (и ошибка останавливает полный анализ), статус проекта может выглядеть следующим образом.
Статус проекта Проект отмечен 31 декабря 1969 года 19:25:14 GMT-0500 (восточное стандартное время) после завершения следующей последовательности состояний в 0 .58с:
Выполнение заканчивается |
Вышеописанное сообщение показывает, что при анализе AUTOSAR XML произошла ошибка.
Для дальнейшей диагностики щелкните значок в верхнем левом углу. На левой панели нажмите кнопку Behaviors. Как правило, вы видите список всех программных компонентов, внутреннее поведение которых извлечено. Для каждого поведения можно:
Проверьте, были ли ошибки во время фазы анализа ARXML и извлечения кода.
См. более подробную информацию об ошибках и предупреждениях.
Щелкните ссылку See key autosar definition for this behavior
для ошибок и предупреждений.
Учебное руководство по фильтрации поведения только с ошибками и интерпретации ошибок и предупреждений смотрите в Интерпретации ошибок и предупреждений в анализе Polyspace кода AUTOSAR.
Совет
Если вы запускаете polyspace-autosar
в командной строке можно запустить только фазу синтаксического анализа AUTOSAR XML. Сначала исправьте все ошибки в AUTOSAR XML, прежде чем продолжить остальную часть анализа.
Используйте опции -do-not-update-extract-code
и -do-not-update-verification
.
Если в исходных файлах обнаружена ошибка компиляции, статус проекта может выглядеть так.
Статус проекта Проект отмечен на Sat Dec 23 2017 19:37:53 GMT-0500 (восточное стандартное время) после завершения следующей последовательности состояний в 38.25с:
Выполнение заканчивается В текущем состоянии обрабатываются 2 поведения AUTOSAR, 2 с извлеченным кодом реализации и 2 с сгенерированным результатом code-prover. |
Вышеописанное сообщение показывает, что при извлечении кода произошла ошибка.
Для дальнейшей диагностики щелкните значок в верхнем левом углу. На левой панели нажмите кнопку Behaviors. Вы можете увидеть список всех программных компонентов, чье внутреннее поведение извлечено.
Чтобы перейти к компонентам, имеющим ошибки, выполните поиск по строке error_atLeastOneRunnableInFileThatDoesNotCompile
. Кроме того, чтобы увидеть только программные компоненты с ошибками компиляции, щелкните Create/Edit Query в левой панели. Щелкните и снимите флажок с has success фильтра, а затем нажмите Search.
Программный компонент с ошибками компиляции выглядит следующим образом.
ApplicationComponentBehavior - jyb.tst002.swc001.bhv001 ... ... Извлечение кода реализации Выполнение не сообщило об ошибке или предупреждении. Экстракция реализации завершается Найдена реализация для 3 из 3 необходимых runnables; извлечение 4 файлов из директории code-source. |
Идентифицируйте, какие программные компоненты имеют ошибку. Чтобы увидеть конкретное сообщение об ошибке, щелкните линией, которое указывает количество файлов, извлеченных из исходных директорий кода. Щелкните ссылку Compiler messages, чтобы открыть .log
файл, содержащий все сообщения об ошибке компиляции в файлах, извлеченных для runnable.
Две наиболее распространенные ошибки извлечения кода включают файлы и неопознанные типы данных. Для этих ошибок можно использовать дополнительные инструменты, чтобы исправить многие ошибки в одном кадре. См.:
Совет
Если один или несколько файлов не компилируются, результаты анализа все еще можно увидеть для компонентов программного обеспечения, где все файлы прошли компиляцию. Таким образом, можно анализировать определенные компоненты программного обеспечения, в то время как разработка все еще продолжается на других.
Если вы запускаете polyspace-autosar
в командной строке можно запустить только фазу извлечения кода. Сначала исправьте все ошибки в коде, прежде чем продолжать анализ.
Используйте опции -do-not-update-autosar-prove-environment
и -do-not-update-verification
.