MISRA® C and C++

Achieve Uncompromising Safety and Reliability with MISRA®

MISRA® provides best-practice coding guidelines for C and C++. Especially in sectors where trust and safety are paramount — like automotive, medical technology, and aerospace and defense — the integrity of the embedded software can have a life-saving impact. Many such industries are required (or strongly recommended) to adhere to the MISRA guidelines for this reason.

Adopting the MISRA standard is far more than a regulatory requirement; it is a proactive strategy for reducing risk, avoiding costly failures, and supporting long-term maintainability across safety-critical applications. Organizations that implement MISRA guidelines — and use tools that speed up the process, like static analysis — deliver innovative software that also meets stringent safety and compliance requirements.

Consider this your guide to MISRA C and MISRA C++.

Read along or jump to the section that interests you most:

What Is MISRA®?

MISRA provides coding standards for developing safety-critical systems.

MISRA is made up of vehicle manufacturers, component suppliers, and engineering consultancies. Perforce are members of the MISRA Consortium Limited and our experts are members of the MISRA Working Groups.

First developed in 1998, MISRA guidelines address the unique challenges posed by C and C++ programming languages in embedded safety-critical applications. By imposing precise rules and eliminating ambiguous constructs, MISRA guidelines help developers produce code that is safe, consistent, and robust.

Why Use MISRA Standards?

You can use MISRA standards to ensure your code is:

  • Safe
  • Secure
  • Reliable
  • Portable

The MISRA C coding standard was originally written for the automotive embedded software industry. But today, MISRA standards for C and C++ are widely used by embedded industries — including aerospace and defense, telecommunications, medical devices, and rail.

Most of these industries have a compliance requirement to use a coding standard — such as ISO 26262 for automotive functional safety.

What Are MISRA C Rules and Guidelines?

MISRA C is the most widely used set of coding guidelines for C around the world. Here is a quick look at how the MISRA guidelines have evolved since the 1998 publication.

MISRA C:2004 (MISRA C2)

MISRA C:2004 is the second edition of MISRA C, published in 2004. It was written for C90. There are 142 coding rules. The update was made to address:

  • Language consistency
  • Specific rules targeting Undefined Behavior only
  • "One rule, one issue" to break down complex rules for ease of compliance
  • Expanding and improving code examples
  • Removing the option for tool-less use.

MISRA C:2012 (MISRA C3)

MISRA C:2012 is the third edition of MISRA C, published in 2013. It was written for C99 and C90 to provide better rationales for the guidelines and more precise descriptions. There are 143 rules and 16 directives.

In subsequent years, MISRA published four amendments, which were in 2023 rolled up into the MISRA C:2023 version of the standard.

MISRA C:2023

A revision of MISRA C:2012 was published in 2023. It is a rollup of all the previous amendments and technical corrigenda and is known as MISRA C:2023. MISRA C:2023 covers C90, C99, and C11/C18. It adds 200 new rules and 21 directives, with 221 guidelines total. MISRA C:2023 is also referred to as MISRA C Third Edition, second revision.

What Are MISRA C++ Rules and Guidelines?

After C was addressed by MISRA and considered more suitable for safety-critical systems, MISRA turned its attention to C++, which was being increasingly used at the time without a set of guidelines. The first MISRA C++ guidelines were published in 2008.

MISRA C++2008

MISRA C++:2008 was published in 2008. It was written for C++03. There are 228 coding rules, including:

Rule 5-0-13 The condition of an if-statement and the condition of an iteration statement shall have type bool.

MISRA C++:2023

MISRA C++:2023 is a new standard for use with modern C++ up to C++17 and incorporating AUTOSAR guidelines.

How to Achieve MISRA C and MISRA C++ Compliance?

Achieving MISRA compliance takes knowledge, skill, and the right tools.

Here are seven steps to comply with MISRA: 1. Know the Rules 2. Check Your Code Constantly 3. Set Baselines 4. Prioritize Violations Based on Risk 5. Document Your Deviations 6. Monitor Your MISRA Compliance 7. Choose the Right Static Code Analyzer

Using Perforce QAC For MISRA C Rules

Perforce QAC finds and reports on violations of MISRA rules and directives in C and C++. Here’s a short demo using Perforce QAC with MISRA C:2012 guidelines.

Why Use Perforce QAC for MISRA Compliance?

  • Independently certified for use in the development of safety-critical software.
  • Fully documented rule enforcement and message interpretation.
  • Supplied with extensive example code.
  • Fully configurable rules processing.
  • Compliance reports for functional safety audits.

How Embedded Developers Use Perforce QAC For MISRA?

[Image
[Image
[Image

Try Perforce QAC for MISRA C and C++

See why Perforce QAC is the best static code analyzer for MISRA C and C++.