MISRA C: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
EmausBot (обсуждение | вклад) м r2.7.3) (робот добавил: cs:MISRA C |
NapalmBot (обсуждение | вклад) м Исправление псевдозаголовков (см. Википедия:Доступность#Заголовки) |
||
(не показано 29 промежуточных версий 20 участников) | |||
Строка 1: | Строка 1: | ||
'''MISRA C''' — стандарт разработки программного обеспечения на языке [[Си (язык программирования)|Си]], разработанный [[MISRA]] (Motor Industry Software Reliability Association). Цель стандарта — улучшить безопасность, переносимость и надежность программ для встраиваемых систем. Также существует набор похожих руководящих принципов для языка C++ под названием [[MISRA C ++]]. |
'''MISRA C''' — стандарт разработки программного обеспечения на языке [[Си (язык программирования)|Си]], разработанный [[MISRA]] (Motor Industry Software Reliability Association). Цель стандарта — улучшить безопасность, переносимость и надежность программ для встраиваемых систем. Также существует набор похожих руководящих принципов для языка C++ под названием [[MISRA C ++]]. |
||
В настоящее время стандарты MISRA используются не только в автомобильной индустрии, но также и в аэрокосмической, телекоммуникационной, разработке медицинских устройств, военных проектах, и других<ref>http://www.programmingresearch.com/QAMISRA.html</ref><ref> |
В настоящее время стандарты MISRA используются не только в автомобильной индустрии, но также и в аэрокосмической, телекоммуникационной, разработке медицинских устройств, военных проектах, и других<ref>{{Cite web |url=http://www.programmingresearch.com/QAMISRA.html |title=MISRA C and MISRA C++ Compliance {{!}} PRQA {{!}} PRQA<!-- Заголовок добавлен ботом --> |access-date=2011-12-29 |archive-date=2010-02-12 |archive-url=https://web.archive.org/web/20100212232316/http://www.programmingresearch.com/QAMISRA.html |deadlink=no }}</ref><ref>{{Cite web |url=http://www.cosmicsoftware.com/misra.php |title=Cosmic Software - MISRA checker<!-- Заголовок добавлен ботом --> |accessdate=2011-12-29 |archiveurl=https://web.archive.org/web/20120212045417/http://www.cosmicsoftware.com/misra.php |archivedate=2012-02-12 |deadlink=yes }}</ref><ref>{{Cite web |url=http://www.ldra.com/misrac.asp |title=LDRA: Using the LDRA tool suite for MISRA-C:2004 Certification<!-- Заголовок добавлен ботом --> |access-date=2011-12-29 |archive-date=2012-03-17 |archive-url=https://web.archive.org/web/20120317190208/http://www.ldra.com/misrac.asp |deadlink=no }}</ref> |
||
Первая редакция стандарта MISRA C, «Guidelines for the use of the C language in vehicle based software», была опубликована в 1998 году, и часто называется ''MISRA-C:1998''.<ref> |
Первая редакция стандарта MISRA C, «Guidelines for the use of the C language in vehicle based software», была опубликована в 1998 году, и часто называется ''MISRA-C:1998''.<ref>{{Cite web |url=http://www.misra-c.com/Activities/MISRAC/tabid/160/Default.aspx |title=A brief history of MISRA C |access-date=2011-12-29 |archive-date=2017-06-07 |archive-url=https://web.archive.org/web/20170607124934/https://www.misra-c.com/Activities/MISRAC/tabid/160/Default.aspx |deadlink=no }}</ref> |
||
В 2004 была издана вторая редакция под названием «Guidelines for the use of the C language in critical systems» (''MISRA-C:2004'') со значительными изменениями, включая перенумерацию правил. |
В 2004 была издана вторая редакция под названием «Guidelines for the use of the C language in critical systems» (''MISRA-C:2004'') со значительными изменениями, включая перенумерацию правил. |
||
Строка 9: | Строка 9: | ||
Продолжается работа над следующей редакцией стандарта, адаптированной к [[C99]]. |
Продолжается работа над следующей редакцией стандарта, адаптированной к [[C99]]. |
||
Официально текст стандарта MISRA C доступен только за плату.<ref>{{Cite web |url=http://www.misra.org.uk/Buyonline/tabid/58/Default.aspx |title=«Buying MISRA C» |access-date=2011-12-29 |archive-date=2011-12-30 |archive-url=https://web.archive.org/web/20111230121701/http://misra.org.uk/Buyonline/tabid/58/Default.aspx |deadlink=no }}</ref> |
|||
== Правила == |
== Правила == |
||
Строка 15: | Строка 15: | ||
В ''MISRA-C:2004'' 141 правило (121 обязательное и 20 рекомендательных). Правила разделены на 21 категорию. |
В ''MISRA-C:2004'' 141 правило (121 обязательное и 20 рекомендательных). Правила разделены на 21 категорию. |
||
В ''MISRA-C:2012'' 143 правила (каждое из которых может быть проверено статическим анализатором кода) и 16 директив (правил, соответствие которым открыто для интерпретаций или связано с процессами и процедурами);<ref name="PRQA-factsheet">{{cite web | url=http://www.programmingresearch.com/content/misc/PRQA-MISRAC2012-FactSheet.pdf | title=Fact Sheet: MISRA C:2012 (PDF) | publisher=programmingresearch.com | accessdate=2013-06-10 | archive-date=2013-11-02 | archive-url=https://web.archive.org/web/20131102034532/http://www.programmingresearch.com/content/misc/PRQA-MISRAC2012-FactSheet.pdf | deadlink=no }}</ref>. Правила делятся на обязательные, требуемые и рекомендательные; могут распространяться на отдельные единицы трансляции или на всю систему<ref name="PRQA-factsheet"/>. Также правила разделены на ''Decidable'' и ''Undecidable''. |
|||
В стандарте MISRA C++ 2008 года, основанном на C++2003, 228 правил<ref>{{Cite web |url=http://www.embedded.com/design/safety-and-security/4413297/Build-secure-and-reliable-embedded-systems-with-MISRA-C-C- |title=Build secure and reliable embedded systems with MISRA C/C++ {{!}} Embedded<!-- Заголовок добавлен ботом --> |access-date=2016-01-21 |archive-date=2016-03-11 |archive-url=https://web.archive.org/web/20160311063535/http://www.embedded.com/design/safety-and-security/4413297/Build-secure-and-reliable-embedded-systems-with-MISRA-C-C- |deadlink=no }}</ref>. |
|||
== Анализаторы == |
== Анализаторы == |
||
Существует множество |
Существует множество программных анализаторов, которые проверяют код на соответствие правилам «MISRA», однако процесса сертификации MISRA не существует.<ref>{{Cite web |url=http://www.misra-c.com/MISRACFAQ/tabid/168/Default.aspx |title=MISRA C FAQ |access-date=2011-12-29 |archive-date=2017-07-06 |archive-url=https://web.archive.org/web/20170706172941/https://www.misra-c.com/MISRACFAQ/tabid/168/Default.aspx |deadlink=no }}</ref> |
||
Большая часть правил может быть проверена при помощи [[Статический анализ кода|утилит статического анализа кода]], но часть из них требуют применения [[Динамический анализ кода|средств динамического анализа]]. |
Большая часть правил может быть проверена при помощи [[Статический анализ кода|утилит статического анализа кода]], но часть из них требуют применения [[Динамический анализ кода|средств динамического анализа]]. |
||
'''Анализаторы, проверяющие соответствие MISRA:''' |
|||
* [[Astrée]] |
|||
* [[Liverpool_Data_Research_Associates|LDRA]] |
|||
* [http://bugseng.com/products/eclair ECLAIR] |
|||
* [[Klocwork]] |
|||
* [[Liverpool Data Research Associates|LDRA]] |
|||
* [[Parasoft]] |
* [[Parasoft]] |
||
* [[PC-Lint]] |
* [[PC-Lint]] |
||
* [[Polyspace]] |
* [[Polyspace]] |
||
* [[PVS-Studio]]<ref>{{Cite web|url=https://www.viva64.com/ru/b/0596/|title=PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++|publisher=www.viva64.com|accessdate=2018-12-10|archive-date=2018-12-10|archive-url=https://web.archive.org/web/20181210202711/https://www.viva64.com/ru/b/0596/|deadlink=no}}</ref> |
|||
* [[QA-C]] |
* [[QA-C]] |
||
* [[ |
* [[Understand (software)|Understand]] |
||
* [[ |
* [[Cppcheck]] |
||
'''Компиляторы C, которые могут проверять соответствие MISRA, выпускаются компаниями:''' |
|||
* [[Green Hills Software]] |
* [[Green Hills Software]] |
||
* [[IAR Systems]] |
* [[IAR Systems]] |
||
* [[Tasking]] |
|||
== Критика == |
|||
Несколько исследований ставят под вопрос эффективность правил MISRA.<ref name="MISRA_comp_1105">{{Cite web |url=http://www.leshatton.org/Documents/MISRA_comp_1105.pdf |title=Language subsetting in an industrial context: a comparison of MISRA C 1998 and MISRA C; Les Hatton; University of Kingston; 2004. |access-date=2019-08-08 |archive-date=2019-08-08 |archive-url=https://web.archive.org/web/20190808204908/https://www.leshatton.org/Documents/MISRA_comp_1105.pdf |deadlink=no }}</ref> В частности, выявлялась негативная корреляция между нарушениями правил MISRA и наблюдаемыми сбоями программ.<ref>[http://resolver.tudelft.nl/uuid:646de5ba-eee8-4ec8-8bbc-2c188e1847ea Assessing the Value of Coding Standards: An Empirical Study; C.J. Boogerd and L. Moonen; Delft University of Technology; 2008.]{{ref-en}}</ref> |
|||
== См. также == |
== См. также == |
||
Строка 44: | Строка 56: | ||
* {{official|http://www.misra.org.uk}} |
* {{official|http://www.misra.org.uk}} |
||
* {{cite web |
* {{cite web |
||
| |
|url = http://www.embedded.com/columns/beginerscorner/9900659?_requestid=427335 |
||
| |
|title = Introduction to MISRA C |
||
| |
|publisher = embedded.com |
||
| |
|archiveurl = https://www.webcitation.org/67jt2mUH3?url=http://eetimes.com/discussion/beginner-s-corner/4023981/Introduction-to-MISRA-C |
||
| |
|archivedate = 2012-05-17 |
||
|deadurl = yes |
|||
}} |
}} |
||
* {{cite web |
* {{cite web |
||
| |
|url = http://electronicdesign.com/Articles/Index.cfm?AD=1&ArticleID=2824 |
||
| |
|title = MISRA C: Safer Is Better |
||
| |
|publisher = electronicdesign.com |
||
| |
|archiveurl = https://www.webcitation.org/67jt4J5L8?url=http://electronicdesign.com/article/embedded-software/misra-c-safer-is-better2824 |
||
| |
|archivedate = 2012-05-17 |
||
|deadurl = yes |
|||
}} |
}} |
||
* {{cite web |
* {{cite web |
||
| |
|url = http://old.iar.com/website1/1.0.1.0/474/1/ |
||
| |
|title = MISRA C — Some key rules to make embedded systems safer |
||
| |
|publisher = iar.com |
||
| |
|deadlink = 404 |
||
}}{{Недоступная ссылка|date=2018-05|bot=InternetArchiveBot }} |
|||
}} |
|||
* {{cite web |
* {{cite web |
||
| |
|url = http://www.leshatton.org/index_SA.html |
||
| |
|title = MISRA C papers |
||
| |
|author = [[Software reliability]] expert [[Les Hatton]] |
||
| |
|publisher = leshatton.org |
||
| |
|deadlink = 404 |
||
|archiveurl = https://web.archive.org/web/20030919013356/http://www.leshatton.org/index_SA.html |
|||
|archivedate = 2003-09-19 |
|||
}} |
}} |
||
* {{cite web |
* {{cite web |
||
| |
|url = http://www.knosof.co.uk/misracom.html |
||
| |
|title = Commentary on the first edition of the MISRA C guidelines |
||
| |
|publisher = knosof.co.uk |
||
| |
|archiveurl = https://www.webcitation.org/67jt5a9vk?url=http://www.knosof.co.uk/misracom.html |
||
| |
|archivedate = 2012-05-17 |
||
|deadurl = yes |
|||
}} |
}} |
||
* {{cite web |
* {{cite web |
||
| |
|url = http://johndayautomotivelectronics.com/?p=505 |
||
| |
|title = Automating Compliance to MISRA C/C++ Standards |
||
| |
|publisher = johndayautomotivelectronics.com |
||
| |
|archiveurl = https://www.webcitation.org/67jt62E1w?url=http://johndayautomotivelectronics.com/?p=505 |
||
| |
|archivedate = 2012-05-17 |
||
|deadurl = yes |
|||
}} |
}} |
||
{{Язык программирования Си}} |
|||
<!-- как диалект-подмножество --> |
|||
[[Категория:Язык программирования Си]] |
[[Категория:Язык программирования Си]] |
||
[[Категория:Языки программирования семейства |
[[Категория:Языки программирования семейства Си]] |
||
[[Категория:Компьютерные и телекоммуникационные стандарты]] |
[[Категория:Компьютерные и телекоммуникационные стандарты]] |
||
{{изолированная статья}} |
|||
[[ar:ميسرا سي]] |
|||
[[cs:MISRA C]] |
|||
[[de:MISRA-C]] |
|||
[[en:MISRA C]] |
|||
[[fr:MISRA C]] |
|||
[[ja:MISRA-C]] |
|||
[[ko:Misra c]] |
|||
[[pl:MISRA C]] |
|||
[[pt:MISRA C]] |
|||
[[sk:MISRA C]] |
|||
[[zh:MISRA C]] |
Текущая версия от 22:36, 11 октября 2024
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]
См. также
[править | править код]Примечания
[править | править код]- ↑ MISRA C and MISRA C++ Compliance | PRQA | PRQA . Дата обращения: 29 декабря 2011. Архивировано 12 февраля 2010 года.
- ↑ Cosmic Software - MISRA checker . Дата обращения: 29 декабря 2011. Архивировано из оригинала 12 февраля 2012 года.
- ↑ LDRA: Using the LDRA tool suite for MISRA-C:2004 Certification . Дата обращения: 29 декабря 2011. Архивировано 17 марта 2012 года.
- ↑ A brief history of MISRA C . Дата обращения: 29 декабря 2011. Архивировано 7 июня 2017 года.
- ↑ «Buying MISRA C» . Дата обращения: 29 декабря 2011. Архивировано 30 декабря 2011 года.
- ↑ computing.unn.ac.uk/staff/cgam1/teaching/0703/misra%20rules.pdf Документ с перечислением всех 127 правил
- ↑ 1 2 Fact Sheet: MISRA C:2012 (PDF) . programmingresearch.com. Дата обращения: 10 июня 2013. Архивировано 2 ноября 2013 года.
- ↑ Build secure and reliable embedded systems with MISRA C/C++ | Embedded . Дата обращения: 21 января 2016. Архивировано 11 марта 2016 года.
- ↑ MISRA C FAQ . Дата обращения: 29 декабря 2011. Архивировано 6 июля 2017 года.
- ↑ PVS-Studio: поддержка стандартов кодирования MISRA C и MISRA C++ . www.viva64.com. Дата обращения: 10 декабря 2018. Архивировано 10 декабря 2018 года.
- ↑ 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 года.
- ↑ 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 года.