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
  • Astrée
  • ECLAIR
  • Klocwork
  • LDRA
  • Parasoft
  • PC-Lint
  • Polyspace
  • PVS-Studio[10]
  • QA-C
  • Understand
  • Cppcheck
Компиляторы C, которые могут проверять соответствие MISRA, выпускаются компаниями
  • Green Hills Software
  • IAR Systems
  • Tasking

Критика

Несколько исследований ставят под вопрос эффективность правил 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. (англ.)

Ссылки

  • misra.org.uk — официальный сайт MISRA C
  • Introduction to MISRA C  (неопр.). embedded.com. Архивировано из оригинала 17 мая 2012 года.
  • MISRA C: Safer Is Better  (неопр.). electronicdesign.com. Архивировано из оригинала 17 мая 2012 года.
  • MISRA C — Some key rules to make embedded systems safer  (неопр.). iar.com. (недоступная ссылка)
  • Software reliability expert Les Hatton. MISRA C papers  (неопр.). leshatton.org. Архивировано 19 сентября 2003 года.
  • Commentary on the first edition of the MISRA C guidelines  (неопр.). knosof.co.uk. Архивировано из оригинала 17 мая 2012 года.
  • Automating Compliance to MISRA C/C++ Standards  (неопр.). johndayautomotivelectronics.com. Архивировано из оригинала 17 мая 2012 года.
Перейти к шаблону «Язык программирования Си»
Язык программирования Си
  • ANSI C
  • C99
  • C11
  • C17[англ.]
  • C2x
  • Embedded C[англ.]
  • MISRA C
Компиляторы
Библиотеки
Особенности
Некоторые потомки
C и другие языки
Категория Категория:Язык программирования Си