Зачем нужен MISRA C — стандарт с огромным количеством запретов? 🚗Стандарт MISRA был разработан ассоциацией MISRA (Motor Industry Software Reliability Association) в 1994 году в Великобритании. Изначальная цель его создания заключалась в повышении безопасности и надежности ПО для автомобилей, так как уже в начале 1990-х стало очевидно, что некачественный код может представлять опасность для пассажиров.
В 1994 году был выпущен первый стандарт "MISRA Guidelines for the Use of C in Vehicle-Based Software". Он определил правила для использования языка C в автомобильном ПО.
В последующие годы стандарт обновлялся и дополнялся. В 2023 году он снова был обновлен; вы можете ознакомиться с ним самостоятельно на
официальном сайте.Таким образом, MISRA C — это набор промышленных рекомендаций и стандартов, разработанных для разработки программного обеспечения на языке C.
На сегодняшний день, MISRA широко используется. Среди компаний, использующих данный стандарт, можно назвать BMW, Ford, General Motors, Toyota, Airbus, Boeing, Siemens Healthineers, Philips Healthcare, Schneider Electric и многие другие.
Именно строгий стандарт MISRA помогает исключить возможность ошибок, которые могут стоить жизни.
Он определяет правила, которым разработчикам следует следовать при написании кода. Каждый год количество правил только растет. Они включают рекомендации по оформлению, использованию конструкций языка и предупреждают о потенциальных проблемах, таких как неопределенное поведение или возможность ошибок.
❓ Как проверять код на соответствие MISRA
Существует несколько анализаторов кода, например:
📍
PC-lint/FlexeLint — популярный инструмент статического анализа для языка C и C++. Он поддерживает проверку соответствия нескольким версиям стандарта MISRA C.
📍
Polyspace — анализатор, который поддерживает проверку соответствия стандарту MISRA C. Он помогает выявлять проблемы, такие как неопределенное поведение или использование небезопасных функций.
📍
Klocwork — инструмент статического анализа, поддерживающий проверку соответствия стандарту MISRA C.
📍
Cppcheck — бесплатный и открытый инструмент статического анализа для C и C++. Исходно он не настроен на проверку соответствия стандарту MISRA, но может обнаруживать некоторые нарушения.
Также существуют специализированные компиляторы:
📍
IAR Embedded Workbench — компилятор, который предоставляет статический анализатор для поиска нарушений правил MISRA и предлагает решения для их исправления.
📍
MULTI IDE — интегрированная среда разработки (IDE) с компилятором, поддерживающим стандарт MISRA C. Она включает инструменты статического анализа, охватывающие правила MISRA и помогающие выявить потенциальные ошибки.
Соблюдение стандарта MISRA C — это только один из инструментов для создания безопасного ПО, но следование этому стандарту зависит от конкретного проекта. Компании могут создавать свои собственные правила, включая MISRA C, и сочетать их с другими методологиями и практиками, такими как тестирование или обзор кода.