Proven by Intelligence
보이지 않는 안전을 인텔리전스로 증명하다.
기술 인사이트를 만나보세요.
2023년 4월, MISRA(Motor Industry Software Reliability Association) 협회는 MISRA C:2023 코딩 가이드라인을 발표하였습니다.
이번 포스팅에서는 여러 산업 분야에서 채택하여 사용하고 있는 기존의 MISRA C:2012 대비 MISRA C:2023의 주요 추가/변경된 사항들을 살펴보고, 대응 방안까지 소개하고자 합니다.
History of MISRA C:2012
MISRA C:2012 코딩 가이드라인은 C90/C99(ISO/IEC 9899:1990/1999) 기반으로 작성되어 2013년 3월에 발표되었습니다. 그리고 지금 현재(본 포스팅 작성 기준 2023.06.30)까지도 여러 산업 분야에서 채택되어 사용되고 있는 대표적인 C 표준 코딩 가이드라인입니다.
그러나, C언어는 C90/C99 이후에도 꾸준히 진화하고 있습니다. C11/C18(ISO/IEC 9899:2011/2018)까지 등장하였으며, 개발자들은 안정성 및 효율성 향상을 위해 최신 C언어 문법 및 기능의 사용을 계속적으로 늘리고 있습니다. 이렇듯 MISRA C:2012 코딩 가이드라인은 최신 C언어를 사용하여 개발한 SW의 신뢰성을 확보하는 데 한계를 직면하였습니다.
이에 따라, MISRA 협회는 MISRA C:2012 코딩 가이드라인이 최신 C언어 대응 한계를 극복할 수 있도록 다음의 [그림 1]과 같이 MISRA C:2012 Amendment 1,2,3,4를 발표하였습니다.
- Amendment 1 “Additional security : guidelines for MISRA C:2012”
- Amendment 2 “Updates for ISO/IEC 9899:2011 : Core functionality”
- Amendment 3 “Updates for ISO/IEC 9899:2011/2018 : Phase 2 – New C11/C18 features”
- Amendment 4 “Updates for ISO/IEC 9899:2011/2018 : Phase 3 – Multi-threading and atomics”

[그림 1] MISRA C:2012 Amendment 1,2,3,4 발표
그리고 2023년 4월, MISRA C:2012 규칙들에 C11/C18 내용을 추가 업데이트하고, Amendment 1,2,3,4 총 62개 규칙을 모두 통합하여 MISRA C:2023을 발표하였습니다.
MISRA C:2023 Released
MISRA C:2012 Amendment 1,2,3,4가 발표되었지만, 현실적으로 MISRA C 코딩 가이드라인을 대응하고 있는 현업에서는 Amendment 1,2,3,4 추가 규칙들을 즉각적으로 채택 및 반영하여 대응하기에 어려움이 따릅니다. 그래서, 여러 산업 분야의 많은 조직에서는 여전히 MISRA C:2012 내 159개 규칙만을 검토 및 채택하여 대응하고 있는 경우가 다수이므로, 본 포스팅에서는 MISRA C:2012 기준으로 MISRA C:2023의 변경 내용을 살펴보도록 하겠습니다.
MISRA C:2012 대비 MISRA C:2023에서는 다음의 [표 1]과 같이 규칙 수가 증가하였으며, 특히 중요도가 높은 Mandatory 및 Required 카테고리의 규칙이 각각 2.4배(10 → 24), 1.3배(110 → 148) 증가하였습니다.
- SW 보안 대응 규칙 14개(13 Rule, 1 Directive) 추가
- C11/C18 대응 규칙 48개(44 Rule, 4 Directive) 추가
| MISRA C:2012 | MISRA C:2023 |
Mandatory | 10 | 24 |
Required | 110 | 148 |
Advisory | 39 | 49 |
Total | 159 | 221 |
[표 1] MISRA C:2012, MISRA C:2023 비교
Ex) MISRA C:2023 Rule 12.6 (New Rule)
“Structure and union members of atomic objects shall not be directly accessed”
_Atomic 키워드는 C11부터 등장하였으며 atomic 개체로 지정하는 키워드입니다. C언어에서 atomic 개체는 데이터 경쟁(Data Race)이 자유로운 개체로, 여러 스레드에서 동시에 접근이 가능하여 충돌 위험이 존재합니다. 따라서, 다음의 [그림 2]와 같이 Rule 12.6에서는 atomic 개체에 직접적인 접근을 제한하고, 안전한 라이브러리 사용 또는 간접적으로 접근할 것을 가이드 합니다.

[그림 2] MISRA C:2023 Rule 12.6 준수/비준수 예제
또한, MISRA C:2023에서는 MISRA C:2012 기존 159개 규칙 중 131개 규칙에 대해서도 C11/C18 대응 가이드 업데이트가 추가되었기 때문에, MISRA C:2023은 최신 C언어 문법 및 기능까지 대응할 수 있는 매우 강력한 C언어 코딩 가이드라인이라고 볼 수 있습니다.
MISRA C:2023 with Helix QAC
Helix QAC의 제조사인 Perforce(구. PRQA)는 MISRA C/C++ 코딩 가이드라인의 최초 제정부터 Release/Update를 담당하는 Working Group 내 핵심 멤버이며, Next MISRA C++(MISRA C++:202x)의 기반이 될 AUTOSAR C++ 14 코딩 가이드라인 제정에 유일하게 참여한 정적 분석 도구 Vendor입니다. 따라서, Helix QAC는 코딩 가이드라인과 관련된 Global Trend에 가장 빠르고 정확하게 대응할 수 있는 정적 분석 솔루션입니다.
MISRA C:2023 역시 Helix QAC 최신 버전(Helix-QAC-2023.1) 자동화 정적 분석을 통해 다음의 [그림 3] 및 [그림 4]와 같이 100% 대응할 수 있습니다.

[그림 3] Helix QAC - MISRA C:2023 Rule 12.6 위반 검출

[그림 4] Helix QAC - MISRA C:2023 Coverage
출처 :
MISRA C:2012 & Amendment 1,2,3,4
MISRA C:2023 Rule 12.6 - Example
이번 블로그 글을 통해 MISRA C:2023 추가 / 변경 사항과 이에 따른 대응 방안에 대해 설명해 드렸습니다.
혹시 Helix QAC에 대해 더 알고 싶으신가요? 💁
MDS인텔리전스는 매달 1회씩 Helix QAC뿐만 아니라 다양한 도구 기본 교육을 진행하고 있습니다!🙌
아래 링크를 통해 MDS인텔리전스 홈페이지를 방문하시어 도구 사용자 교육을 수강해 보세요!
훨씬 더 쉽게 Helix QAC를 활용하실 수 있습니다
