MISRA C

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 91.193.204.74 (обсуждение) в 14:29, 7 октября 2021 (Добавлен Cppcheck). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

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
  2. Cosmic Software - MISRA checker. Дата обращения: 29 декабря 2011. Архивировано из оригинала 12 февраля 2012 года.
  3. LDRA: Using the LDRA tool suite for MISRA-C:2004 Certification
  4. A brief history of MISRA C
  5. «Buying MISRA C»
  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.
  8. Build secure and reliable embedded systems with MISRA C/C++ | Embedded
  9. MISRA C FAQ
  10. PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++. www.viva64.com. Дата обращения: 10 декабря 2018.
  11. Language subsetting in an industrial context: a comparison of MISRA C 1998 and MISRA C; Les Hatton; University of Kingston; 2004.
  12. Assessing the Value of Coding Standards: An Empirical Study; C.J. Boogerd and L. Moonen; Delft University of Technology; 2008. (англ.)

Ссылки