Invisible Safety,

Proven by Intelligence

보이지 않는 안전을 인텔리전스로 증명하다.

기술 노트
IT 산업의 변화를 이끄는 MDS인텔리전스의
기술 인사이트를 만나보세요.
시스템 소프트웨어 개발
[QAC] MISRA C++:2023 살펴보기 🔎
2026년 01월 13일

2023년 4월, MISRA(Motor Industry Software Reliability Association) 협회는 MISRA C:2023 코딩 가이드라인을 발표하였는데요, 그로부터 6개월이 지난 2023년 10월에는 MISRA C++:2023 코딩 가이드라인도 발표하였습니다.



이번 포스팅에서는 현재 여러 산업 분야에서 채택하여 사용하고 있는 기존의 MISRA C++:2008 대비 새로운 MISRA C++:2023의 주요 추가/변경된 사항들을 살펴보고, 대응 방안까지 소개하고자 합니다.




MISRA C:2023에 대한 주요 내용과 Helix QAC를 통한 대응 방안은 이전 포스팅을 참고해주세요!

[QAC] MISRA C:2023 살펴보기🔎


 



 History of MISRA C++


MISRA C++:2008은 C++03(ISO/IEC 14882:2003)을 기반으로 작성되어 2008년 6월에 발표된 MISRA C++ 코딩 가이드라인의 초판입니다. MISRA C 코딩 가이드라인의 초판인 MISRA C:2004 일부에 C++ 언어 고유의 신규 규칙들을 추가하여 228개의 규칙으로 구성되었습니다.



이후, MISRA C++:2008은 다수의 Safety Critical 시스템 분야에서 채택되며 여러 산업 분야로 확장되었습니다. 그러나, C++ 언어가 끊임없이 진화함에 따라서 사람들은 최신 C++ 언어의 기능 및 문법에 대한 안전성 및 보안성 등의 신뢰성을 향상시킬 수 있는 새로운 코딩 가이드라인이 등장하길 원했습니다.



그래서 등장한 새로운 코딩 가이드라인이 AUTOSAR 협회에서 MISRA C++:2008을 확장 및 업데이트한 AUOTSAR C++14 코딩 가이드라인입니다. AUTOSAR C++14는 2017년 3월에 초판인 17-03 버전이 등장하였으며 연 2회 추가 업데이트를 진행하였고, 2019년 3월에 19-03 버전을 마지막으로 추가 Release가 종료되었습니다. 그 당시 AUTOSAR C++14는 최신 C++11/14까지 확장된 강력한 코딩 가이드라인이었으며, 19-03 버전 기준으로 전체 397개 규칙을 제공하였습니다.



MISRA 협회에서는 이러한 AUTOSAR C++14와 MISRA C++:2008을 통합하여 보다 강력한 Next MISRA C++ 코딩 가이드라인을 배포하겠다고 2019년 1월에 공식적으로 발표하였고, 그리고 그 강력한 코딩 가이드라인은 2023년 10월에 MISRA C++:2023으로 배포되었습니다.



다음의 [그림 1]은 위 내용에 대한 요약입니다.



[그림 1] History of MISRA C++

Reference : MISRA C++:2008/2023 & AUTOSAR C++14




MISRA C++:2008은 전체 228개 규칙, 그리고 C++11/14까지 확장 및 업데이트된 AUTOSAR C++14는 전체 397개 규칙으로 구성되어 있는데요, MISRA C++:2008 & AUTOSAR C++14 기반 통합 및 업데이트된 MISRA C++:2023은 어떤 구성을 가지고 있을지 살펴보도록 하겠습니다.


 



 MISRA C++:2023 Released


MISRA C++:2023의 정식 명칭은 “Guidelines for the use of C++17 in critical systems”로, MISRA C++:2008 대비 C++17까지 확장 업데이트됨을 예상할 수 있으며, 전체 규칙은 다음과 같이 구성되어 있음을 확인할 수 있습니다.


MISRA C++:2008

MISRA C++:2023

Document

12

-

Mandatory

-

5

Required

198

124

Advisory

18

50

Total

228

179

[표 1] MISRA C++:2008/2023 비교


 

규칙 카테고리의 경우, 기존 MISRA C++:2008을 따르지 않고 MISRA C:2023과 통일하여 Mandatory / Required / Advisory 3개로 구성되었습니다.



규칙 수의 경우, 기존 MISRA C++:2008의 228개 보다 감소한 179개의 규칙을 제공하는데요, 이는 기존 MISRA C++:2008과 최신 C++ 언어가 충돌하는 부분에 관련된 규칙들이 다수 제거된 것으로 볼 수 있습니다.




 

[그림 2] MISRA C++:2008 Rule 10-3-2 (Reference : MISRA C++:2008)



MISRA C++:2008 Rule 10-3-2는 가상 함수 재정의 시에 virtual 키워드를 명시적으로 사용할 것을 가이드하는 규칙입니다. 그러나, C++11 이상부터는 가상 함수 재정의 시에 virtual 키워드 대신 override 키워드 사용이 가능합니다. 따라서, 해당 규칙은 MISRA C++:2023에서 제거되었으며, 추후 MISRA C++:2023을 대응할 경우에는 이러한 규칙들에 대한 불필요한 소명 작업 감소가 기대됩니다.



마지막으로, 진화한 C++ 언어에 대한 신규 규칙이 다수 추가되었는데요, C++03까지 기존 존재했던 C++ Feature에 대한 신규 규칙들과 C++11/14/17에서 추가된 C++ Feature에 대한 신규 규칙들이 다수 추가되었습니다.


 


Ex) MISRA C++:2023 Rule 4.6.1

    “Operations on a memory location shall be sequenced appropriately”



[그림 3] MISRA C++:2023 Rule 4.6.1 (Reference : MISRA C++:2023)


 


MISRA C++:2023 Rule 4.6.1은 Memory Location에서 올바른 순서를 지정할 것을 가이드하는 규칙입니다. C++17에서는 Determinately Sequenced를 지원하여 대입 연산자 우측이 우선순위를 갖게 되므로 먼저 수행됩니다.


 


MISRA C++:2023 with Helix QAC


Helix QAC의 제조사인 Perforce(구.PRQA)는 MISRA C/C++ 코딩 가이드라인의 최초 제정부터 Release/Update를 담당하는 Working Group 내 핵심 멤버이며, AUTOSAR C++14 코딩 가이드라인 제정에 유일하게 참여한 정적 분석 도구 Vendor입니다. 따라서, Helix QAC는 코딩 가이드라인과 관련된 Global Trend에 가장 빠르고 정확하게 대응할 수 있는 정적 분석 솔루션입니다.


MISRA C++:2023 역시 Helix QAC & M2CPP(MISRA C++:2023 Compliance Module) 자동화 정적 분석을 통해 대응 가능하며, Helix QAC 최신 버전(Helix-QAC-2023.3)부터 100% 분석을 지원합니다.




[그림 4] (왼) MISRA C++:2023 분석 설정 | (오) MISRA C++:2023 룰셋 템플릿 적용




[그림 5] Helix QAC - MISRA C++:2023 Coverage



출처 : MISRA C++:2023



이번 블로그 글을 통해 MISRA C++:2023 추가 및 변경 사항과 이에 따른 대응 방안에 대해 설명해 드렸습니다. 



혹시 Helix QAC에 대해 더 알고 싶으신가요? 💁

MDS인텔리전스는 매달 1회씩 Helix QAC뿐만 아니라 다양한 도구 기본 교육을 진행하고 있습니다!🙌

아래 링크를 통해 MDS인텔리전스 홈페이지를 방문하시어 도구 사용자 교육을 수강해 보세요! 

훨씬 더 쉽게 Helix QAC를 활용하실 수 있습니다


>> Helix QAC 교육 신청하기 >>



MDS인텔리전스
코딩 규칙 검사 및 소스 품질 관리 도구, QAC