Polyspace поддерживает два подхода для проверки кода AUTOSAR: анализ на основе компонентов и интеграционный анализ.
![]()
В двух словах анализ на основе компонентов требует спецификаций проектирования компонентов программного обеспечения AUTOSAR и извлекает всю необходимую информацию из этих спецификаций, в то время как интеграционный анализ не требует этих спецификаций.
В компонентном подходе к анализу предоставляются спецификации конструкции AUTOSAR в формате ARXML. Анализ считывает эти спецификации, создает отдельный модуль кода C для каждого компонента программного обеспечения, а затем проверяет каждый модуль на наличие ошибок времени выполнения и несоответствие спецификациям конструкции.
Обзор этого подхода см. в разделе Преимущества Polyspace для AUTOSAR. Сведения о настройке анализа на основе компонентов см. в разделе Запуск Polyspace по коду AUTOSAR.
В подходе интеграционного анализа спецификации проекта не предоставляются, а просто выполняется поиск ошибок или проверка кода для одного проекта со всем соответствующим исходным кодом. Для получения информации об анализе AUTOSAR используйте значение autosar для опции анализа Libraries used (-library).
![]()
Как компонентный, так и интеграционный анализ соответствуют стандарту AUTOSAR. Кроме того, в компонентном анализе также используются спецификации проекта AUTOSAR.
![]()
В обеих формах анализа функции из среды выполнения AUTOSAR или уровня RTE заменяются точными заглушками. Эти заглушки позволяют:
Более быстрый и точный анализ, так как анализ не пытается проверить реализацию функций RTE. Вместо этого анализ эмулирует функции RTE на основе стандарта AUTOSAR. (Проверка реализации функции не является необходимой для проверки использования функции и может привести к потере точности.)
Во время выполнения проверяет аргументы функции, которые ищут нарушения стандарта AUTOSAR.
Например, согласно стандартному определению входного аргумента, если аргумент является указателем, указатель должен указывать на инициализированный буфер. Polyspace может проверить, указывает ли аргумент в данном вызове на возможно неинициализированный буфер.
Обе проверки Non-compliance with AUTOSAR specification (интеграционный анализ) и Invalid use of AUTOSAR runtime environment function (анализ на основе компонентов) поиск нарушений стандарта AUTOSAR.
![]()
В дополнение к использованию точных заглушек для уровня RTE, анализ на основе компонентов также использует информацию из предоставленных спецификаций конструкции. В результате компонентный анализ имеет следующие дополнительные функции, не найденные в интеграционном анализе:
Автоматическое разделение кода на модули на основе спецификаций программных компонентов.
Автоматическая идентификация runnables AUTOSAR в каждом модуле (точки входа) и проверка во время выполнения этих runnables. См. также Invalid result of AUTOSAR runnable implementation.
Дополнительные проверки аргументов функции RTE для определения того, нарушают ли они ограничения данных из спецификаций проекта. Эти проверки могут быть более точными, чем проверки во время выполнения, основанные на стандарте AUTOSAR, поскольку они используют более узкие ограничения данных для определенных типов данных из спецификаций проекта. См. также Invalid use of AUTOSAR runtime environment function.
![]()
Если требуется просто выполнить анализ с учетом спецификаций из стандарта AUTOSAR, но не требуется сравнивать код со спецификациями проекта, можно выполнить интеграционный анализ. В противном случае выполните анализ на основе компонентов, чтобы обеспечить синхронизацию реализаций программных компонентов со спецификациями проекта.
Компонентный анализ может дать более насыщенные результаты, чем интеграционный анализ, но требует более сложной настройки:
Анализ на основе компонентов выполняется в три фазы: анализ ARXML, извлечение кода и, наконец, проверка статического кода. Ошибки на каждой фазе могут распространяться на последующие дочерние проблемы. Для устранения ошибок может потребоваться подробное знание проекта AUTOSAR. Например, может потребоваться исключить артефакты, такие как оставшиеся файлы шаблонов, из генераторов кода.
Только средство проверки кода поддерживает анализ на основе компонентов.
Интеграционный анализ работает только с предоставленным кодом и проще в настройке. Необходимо выполнить только регулярный анализ с одной дополнительной опцией, чтобы сделать анализ AUTOSAR-осведомленным.
И Bug Finder, и Code Prover поддерживают интеграционный анализ с одинаковыми проверками. Средство поиска ошибок является менее исчерпывающим, чем средство проверки кода, и может показывать меньше результатов для этих проверок.
![]()