Стандарты MISRA¶
В MISRA C правила делятся на три основных категории: Mandatory, Required и Advisory.
Mandatory – это правила, которые нельзя нарушать ни под каким предлогом. Например, в этот раздел входит правило «не используйте значение неинициализированной переменной».
Required -правила менее строги: они допускают возможность отклонения, но только если эти отклонения тщательно документируются и письменно обосновываются.
Остальные правила входят в категорию Advisory – это правила, которым следовать не обязательно.
В MISRA C++ немного по-другому: там отсутствует категория Mandatory, и большинство правил принадлежит к категории Required. Поэтому, по сути, вы имеете право нарушить любое правило – только не забывайте документировать отклонения. Также там есть категория Document – это обязательные к выполнению правила (отклонения не допускаются), которые связаны с общими практиками вроде «Каждое использование ассемблера должно быть задокументировано» или «подключаемая библиотека должна соответствовать MISRA C++».