Это не официальный сайт wikipedia.org 01.01.2023

MISRA C — Википедия

MISRA C

MISRA C — стандарт разработки программного обеспечения на языке Си, разработанный MISRA (Motor Industry Software Reliability Association). Цель стандарта — улучшить безопасность, переносимость и надежность программ для встраиваемых систем. Также существует набор похожих руководящих принципов для языка C++ под названием MISRA C ++.

В настоящее время стандарты MISRA используются не только в автомобильной индустрии, но также и в аэрокосмической, телекоммуникационной, разработке медицинских устройств, военных проектах, и других[1][2][3]

Первая редакция стандарта MISRA C, «Guidelines for the use of the C language in vehicle based software», была опубликована в 1998 году, и часто называется MISRA-C:1998.[4]

В 2004 была издана вторая редакция под названием «Guidelines for the use of the C language in critical systems» (MISRA-C:2004) со значительными изменениями, включая перенумерацию правил.

Продолжается работа над следующей редакцией стандарта, адаптированной к C99.

Официально текст стандарта MISRA C доступен только за плату.[5]

ПравилаПравить

В MISRA-C:1998 перечислено 127 правил[6] (93 обязательных и 34 рекомендательных).

В MISRA-C:2004 141 правило (121 обязательное и 20 рекомендательных). Правила разделены на 21 категорию.

В MISRA-C:2012 143 правила (каждое из которых может быть проверено статическим анализатором кода) и 16 директив (правил, соответствие которым открыто для интерпретаций или связано с процессами и процедурами);[7]. Правила делятся на обязательные, требуемые и рекомендательные; могут распространяться на отдельные единицы трансляции или на всю систему[7]. Также правила разделены на Decidable и Undecidable.

В стандарте MISRA C++ 2008 года, основанном на C++2003, 228 правил[8].

АнализаторыПравить

Существует множество программных анализаторов, которые проверяют код на соответствие правилам «MISRA», однако процесса сертификации MISRA не существует.[9]

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

Анализаторы, проверяющие соответствие MISRA
Компиляторы C, которые могут проверять соответствие MISRA, выпускаются компаниями

КритикаПравить

Несколько исследований ставят под вопрос эффективность правил MISRA.[11] В частности, выявлялась негативная корреляция между нарушениями правил MISRA и наблюдаемыми сбоями программ.[12]

См. такжеПравить

ПримечанияПравить

  1. MISRA C and MISRA C++ Compliance | PRQA | PRQA  (неопр.). Дата обращения: 29 декабря 2011. Архивировано 12 февраля 2010 года.
  2. Cosmic Software - MISRA checker  (неопр.). Дата обращения: 29 декабря 2011. Архивировано из оригинала 12 февраля 2012 года.
  3. LDRA: Using the LDRA tool suite for MISRA-C:2004 Certification  (неопр.). Дата обращения: 29 декабря 2011. Архивировано 17 марта 2012 года.
  4. A brief history of MISRA C  (неопр.). Дата обращения: 29 декабря 2011. Архивировано 7 июня 2017 года.
  5. «Buying MISRA C»  (неопр.). Дата обращения: 29 декабря 2011. Архивировано 30 декабря 2011 года.
  6. computing.unn.ac.uk/staff/cgam1/teaching/0703/misra%20rules.pdf Документ с перечислением всех 127 правил
  7. 1 2 Fact Sheet: MISRA C:2012 (PDF)  (неопр.). programmingresearch.com. Дата обращения: 10 июня 2013. Архивировано 2 ноября 2013 года.
  8. Build secure and reliable embedded systems with MISRA C/C++ | Embedded  (неопр.). Дата обращения: 21 января 2016. Архивировано 11 марта 2016 года.
  9. MISRA C FAQ  (неопр.). Дата обращения: 29 декабря 2011. Архивировано 6 июля 2017 года.
  10. PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++  (неопр.). www.viva64.com. Дата обращения: 10 декабря 2018. Архивировано 10 декабря 2018 года.
  11. Language subsetting in an industrial context: a comparison of MISRA C 1998 and MISRA C; Les Hatton; University of Kingston; 2004.  (неопр.) Дата обращения: 8 августа 2019. Архивировано 8 августа 2019 года.
  12. Assessing the Value of Coding Standards: An Empirical Study; C.J. Boogerd and L. Moonen; Delft University of Technology; 2008. (англ.)

СсылкиПравить