MISRA C는 중요 시스템(critical systems)을 개발할 때 쓰는 C 언어 코딩 지침 모음이다. 문서 제목은 “Guidelines for the use of the C language in critical systems”다.[1] MISRA C 지침은 C 언어의 부분집합을 정의하며, 이 부분집합에서는 실수할 여지를 없애거나 줄인다.[2]

MISRA C는 MISRA가 펴낸다. MISRA는 The MISRA Consortium Limited의 상호다.[3] MISRA는 1990년대 초 영국 정부의 SafeIT 연구 프로그램 안의 프로젝트로 시작했다.[4] MISRA C는 1994년 MISRA의 차량용 소프트웨어 개발 지침이 요구한 표준 언어의 제한된 부분집합을 채우려고, 차량용 임베디드 소프트웨어에 C가 쓰이기 시작하던 때 만들어졌다.[5] 1999년 MISRA 사이트는 MISRA를 Motor Industry Software Reliability Association으로 적었다.[6]

범위

MISRA Compliance:2020은 MISRA 지침을 rule과 directive로 나누고, 대부분이 rule이라고 둔다.[1]

  • Rule: 소스 코드에 대해 완전하고 객관적이며 모호하지 않은 요구를 두는 지침. 그 요구는 프로세스, 설계 문서, 기능 요구사항과 무관하다.
  • Directive: 소스 코드만으로는 정의되지 않는 지침. 프로세스, 문서, 기능 요구사항을 가리키거나 그것에 요구를 둔다.[1]

이 문서는 지침마다 Mandatory, Required, Advisory 가운데 하나의 분류를 둔다.[1]

  • Mandatory: 어떤 경우에도 어길 수 없다.
  • Required: 명확한 제한, 요구, 예방 조치를 정한 deviation이 뒷받침할 때만 어길 수 있다.
  • Advisory: 합리적으로 가능한 만큼 따르라는 권고다. 위반은 찾아 두지만 deviation으로 뒷받침하지 않아도 된다.[1]

이 문서는 rule에 두 가지 성질을 더 둔다.[1]

  • 결정 가능성(decidability): decidable rule은 도구가 바르게 설정되고 결함이 없으면 언제나 준수 여부를 예나 아니요로 답할 수 있다. Undecidable rule은 분석 도구가 모든 경우에 답한다고 보장하지 못한다.
  • 분석 범위: Single Translation Unit rule은 번역 단위를 하나씩 보면 되고, System rule은 시스템 전체의 소스 코드를 봐야 한다.[1]

이 문서는 지침 위반을 정해진 절차로 승인받고 deviation record로 뒷받침하게 한다. 이 문서는 MISRA 지침을 지켰다고 주장하는 요건과 deviation을 다루며, 그 전 MISRA 지침 문서에 있던 준수, deviation, 프로세스에 대한 요구를 대체한다.[1] MISRA C:2012 Amendment 2는 MISRA Compliance를 반드시 따르도록 했다.[7] 도구로 준수를 확인하는 일은 정적 분석에서 다룬다.

개정 이력

  • 1998년: 첫판 MISRA C:1998. 4월에 “Guidelines for the Use of the C Language in Vehicle Based Software”라는 제목으로 나왔다.[6][8] ISO/ANSI 표준 C를 대상으로 규칙 127개를 두었다.[6]
  • 2004년: 둘째 판 MISRA C:2004. 사용자 의견과 여러 산업에서의 쓰임을 반영했다.[9] 원래의 자동차 산업을 넘어 철도, 군사, 항공우주, 의료 분야에서도 쓰이게 된 것을 반영해, 제목을 “Guidelines for the use of the C language in critical systems”로 바꿨다.[10] 미정의 동작을 포괄적으로 다루던 규칙을 미정의 동작을 겨냥한 구체적 규칙들로 바꿨다.[3] C90을 기준으로 규칙 141개를 두었고, C99는 다루지 않았다.[11]
  • 2013년: 셋째 판 MISRA C:2012. 3월 18일에 나왔다. C99 지원을 넣고 C90 지원도 유지했으며, rule마다 결정 가능성을 밝혔다.[3] 지침을 rule과 directive로 나누고, Mandatory 분류를 새로 넣었다.[1]
  • 2016년: MISRA C:2012 Amendment 1. 4월에 나왔고, 보안 관련 지침을 더했다.[12]
  • 2019년: MISRA C:2012의 개정본(셋째 판 첫 개정)이 2월에 나왔다. Amendment 1과 Technical Corrigendum 1을 합쳤다.[3]
  • 2020년: MISRA C:2012 Amendment 2. 2월에 나왔고, C11을 지원 범위에 넣었다. C18은 C11과 기능이 같아 함께 지원된다.[7]
  • 2023년: MISRA C:2023(셋째 판 둘째 개정). 4월에 나왔다. Amendment 2부터 Amendment 4까지와 Technical Corrigendum 2를 합치고, C11과 C18 지원을 담았다.[3][13]
  • 2025년: MISRA C:2025. 3월에 나온 현행판이다.[9] 지침을 조금씩 고친 판이고, C11과 C18, 그 앞의 C 판 지원을 유지한다.[3] MISRA C:2023의 Rule 21.2를 Rule 5.10으로 옮겼다.[2][14] 앞서 나온 모든 판을 대체한다.[15]

[1]
“MISRA Compliance:2020: Achieving compliance with MISRA Coding Guidelines,” HORIBA MIRA Limited, 2020. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/app/uploads/2021/06/MISRA-Compliance-2020.pdf
[2]
“MISRA C:2023 Addendum 3: Coverage of MISRA C:2023 against CERT C 2016 Edition,” The MISRA Consortium Limited, 2025. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/app/uploads/2025/03/MISRA-C-2023-ADD3-CERT.pdf
[3]
MISRA, “MISRA C.” 2025. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/misra-c/
[4]
MISRA, “A brief history of MISRA.” 2021. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/a-brief-history-of-misra/
[5]
MISRA, “MISRA.” 2026. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/
[6]
MISRA, “Guidelines for the Use of the C Language in Vehicle Based Software.” 1999. Accessed: Oct. 03, 2026. [Online]. Available: https://web.archive.org/web/19990824045459/http://www.misra.org.uk:80/misra-c.htm
[7]
“MISRA C:2012 Amendment 2: Updates for ISO/IEC 9899:2011 Core functionality,” HORIBA MIRA Limited, 2020. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/app/uploads/2021/06/MISRA-C-2012-AMD2.pdf
[8]
MISRA, “MISRA publications.” 2015. Accessed: Oct. 03, 2026. [Online]. Available: https://web.archive.org/web/20150223084222/http://www.misra.org.uk/Publications/tabid/57/Default.aspx
[9]
MISRA, “Frequently asked questions.” 2025. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/faqs/
[10]
MISRA, “MISRA-C:2004 published (press release).” 2004. Accessed: Oct. 04, 2026. [Online]. Available: https://web.archive.org/web/20050520014114/http://www.misra-c.com:80/downloads/MISRAC2004press.pdf
[11]
MISRA, “MISRA C FAQs.” 2004. Accessed: Oct. 03, 2026. [Online]. Available: https://web.archive.org/web/20041015123426/http://www.misra-c.com:80/faqs.htm
[12]
“MISRA C:2012 Amendment 1: Additional security guidelines for MISRA C:2012,” HORIBA MIRA Limited, 2016. Accessed: Oct. 05, 2026. [Online]. Available: https://web.archive.org/web/20210418194011/https://www.misra.org.uk/LinkClick.aspx?fileticket=V2wsZxtVGkE%253d&tabid=57
[13]
MISRA, “MISRA C:2023 released.” 2023. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/misra-c2023-released/
[14]
“MISRA C:2025 Addendum 6: Applicability of MISRA C:2025 to the Rust Programming Language,” The MISRA Consortium Limited, 2025. Accessed: Oct. 04, 2026. [Online]. Available: https://misra.org.uk/app/uploads/2025/03/MISRA-C-2025-ADD6.pdf
[15]
MISRA, “MISRA C:2025.” 2025. Accessed: Oct. 03, 2026. [Online]. Available: https://misra.org.uk/product/misra-c2025/