{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:09:21Z","timestamp":1750219761958,"version":"3.41.0"},"reference-count":37,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2025,1,22]],"date-time":"2025-01-22T00:00:00Z","timestamp":1737504000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Cyber-Phys. Syst."],"published-print":{"date-parts":[[2025,1,31]]},"abstract":"<jats:p>Cyber-Physical Systems (CPS) are increasingly used in many complex applications, such as autonomous delivery drones, the automotive CPS design, power grid control systems, and medical robotics. However, existing programming languages lack certain design patterns for CPS designs, including temporal semantics and concurrency models. Future research directions may involve programming language extensions to support CPS designs. However, JSF++, MISRA, and MISRA C++ are providing specifications intended to increase the reliability of safety-critical systems. This article also describes the development of rule checkers based on the MISRA C++ specification using the Clang open-source tool, which allows for the annotation of code and the easy extension of the MISRA C++ specification to other programming languages and systems. This is potentially useful for future CPS language research extensions to work with reliability software specifications using the Clang tool. Experiments were performed using key C++ benchmarks to validate our method in comparison with the well-known Coverity commercial tool. We illustrate key rules related to class, inheritance, template, overloading, and exception handling. Open-source benchmarks that violate the rules detected by our checkers are also illustrated. A random graph generator is further used to generate diamond case with multiple inheritance test data for our software validations. The experimental results demonstrate that our method can provide information that is more detailed than that obtained using Coverity for nine open-source C++ benchmarks. Since the Clang tool is widely used, it will further allow developers to annotate their own extensions.<\/jats:p>","DOI":"10.1145\/3611390","type":"journal-article","created":{"date-parts":[[2023,7,31]],"date-time":"2023-07-31T12:08:57Z","timestamp":1690805337000},"page":"1-27","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Support of MISRA C++ Analyzer for Reliability of Embedded Systems"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0009-0001-3078-0939","authenticated-orcid":false,"given":"Che-Chia","family":"Lin","sequence":"first","affiliation":[{"name":"Department of Computer Science, National Tsing Hua University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0004-4758-5533","authenticated-orcid":false,"given":"Wei-Hsu","family":"Chu","sequence":"additional","affiliation":[{"name":"Department of Computer Science, National Tsing Hua University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3241-8949","authenticated-orcid":false,"given":"Chia-Hsuan","family":"Chang","sequence":"additional","affiliation":[{"name":"Department of Computer Science, National Tsing Hua University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4674-9872","authenticated-orcid":false,"given":"Hui-Hsin","family":"Liao","sequence":"additional","affiliation":[{"name":"Department of Computer Science, National Tsing Hua University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1897-5338","authenticated-orcid":false,"given":"Chun-Chieh","family":"Yang","sequence":"additional","affiliation":[{"name":"Department of Computer Science, National Tsing Hua University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9919-6258","authenticated-orcid":false,"given":"Jenq-Kuen","family":"Lee","sequence":"additional","affiliation":[{"name":"Department of Computer Science, National Tsing Hua University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4455-3147","authenticated-orcid":false,"given":"Yi-Ping","family":"You","sequence":"additional","affiliation":[{"name":"Department of Computer Science, National Yang Ming Chiao Tung University, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0005-3095-3085","authenticated-orcid":false,"given":"Tien-Yuan","family":"Hsieh","sequence":"additional","affiliation":[{"name":"Industrial Technology Research Institute, Hsinchu, Taiwan"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2025,1,22]]},"reference":[{"key":"e_1_3_2_2_2","first-page":"7","article-title":"Analysis tool evaluation: Coverity prevent","author":"Almossawi Ali","year":"2006","unstructured":"Ali Almossawi, Kelvin Lim, and Tanmay Sinha. 2006. Analysis tool evaluation: Coverity prevent. Carnegie Mellon University, Pittsburgh, PA, 7\u201311. Retrieved from https:\/\/www.cs.cmu.edu\/aldrich\/courses\/654-sp07\/tools\/cure-coverity-06.pdf","journal-title":"Carnegie Mellon University, Pittsburgh, PA"},{"key":"e_1_3_2_3_2","volume-title":"Safe C++ Guidelines Checkers und Quick Fixes","author":"Bertschi Pascal","year":"2018","unstructured":"Pascal Bertschi and Andreas Deicha. 2018. Safe C++ Guidelines Checkers und Quick Fixes. Ph. D. Dissertation. HSR Hochschule f\u00fcr Technik Rapperswil."},{"key":"e_1_3_2_4_2","first-page":"1","volume-title":"Proceedings of the International Workshop on OpenCL","author":"Chang Po-Yao","year":"2021","unstructured":"Po-Yao Chang, Tai-Liang Chen, and Jenq-Kuen Lee. 2021. Enabling the use of C++ 20 unseq execution policy for OpenCL. In Proceedings of the International Workshop on OpenCL. 1\u20132."},{"key":"e_1_3_2_5_2","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2004.56"},{"key":"e_1_3_2_6_2","volume-title":"scan-build","author":"Clang","year":"2008","unstructured":"Clang 2008. scan-build. Clang, Retrieved from https:\/\/clang-analyzer.llvm.org\/scan-build.html"},{"key":"e_1_3_2_7_2","volume-title":"Android Auto Framework","author":"Clang","year":"2020","unstructured":"Clang 2020. Android Auto Framework. Clang. Retrieved from https:\/\/www.android.com\/auto\/"},{"key":"e_1_3_2_8_2","volume-title":"Clang-Tidy","author":"Clang","year":"2020","unstructured":"Clang 2020. Clang-Tidy. Clang. Retrieved from https:\/\/clang.llvm.org\/extra\/clang-tidy\/"},{"key":"e_1_3_2_9_2","volume-title":"GENEVI Framework","author":"Clang","year":"2020","unstructured":"Clang 2020. GENEVI Framework. Clang. Retrieved from https:\/\/www.genivi.org\/"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.4108\/ICST.SIMUTOOLS2010.8667"},{"key":"e_1_3_2_11_2","volume-title":"CppPerformanceBenchmarks-Release5","author":"Cox Chris","year":"2018","unstructured":"Chris Cox. 2018. CppPerformanceBenchmarks-Release5. Retrieved from https:\/\/gitlab.com\/chriscox\/CppPerformanceBenchmarks"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jpdc.2014.07.003"},{"key":"e_1_3_2_13_2","volume-title":"Google Test","author":"Google","year":"2016","unstructured":"Google 2016. Google Test. Google. Retrieved from https:\/\/github.com\/google\/googletest"},{"key":"e_1_3_2_14_2","volume-title":"Google Logging Library","author":"Google","year":"2017","unstructured":"Google 2017. Google Logging Library. Google. Retrieved from https:\/\/github.com\/google\/glog"},{"key":"e_1_3_2_15_2","doi-asserted-by":"crossref","first-page":"231","DOI":"10.1007\/978-1-4302-4000-6_9","volume-title":"Pro Android Apps Performance Optimization","author":"Guihot Herv\u00e9","year":"2012","unstructured":"Herv\u00e9 Guihot. 2012. RenderScript. In Pro Android Apps Performance Optimization. Springer, 231\u2013263."},{"key":"e_1_3_2_16_2","article-title":"Support of probabilistic pointer analysis in the SSA Form","volume":"23","author":"Hung Ming-Yu","year":"2012","unstructured":"Ming-Yu Hung, Peng-Sheng Chen, Yuan-Shin Hwang, Roy Dz-Ching Ju, and Jenq-Kuen Lee. 2012. Support of probabilistic pointer analysis in the SSA Form. IEEE Trans. Parallel Distrib. Syst. 23 (Dec. 2012), 23661\u20132379. Issue 12.","journal-title":"IEEE Trans. Parallel Distrib. Syst."},{"key":"e_1_3_2_17_2","first-page":"98","volume-title":"Proceedings of the International Conference on Computer Safety, Reliability, and Security","author":"K\u00e4stner Daniel","year":"2020","unstructured":"Daniel K\u00e4stner, Christoph Cullmann, Gernot Gebhard, Sebastian Hahn, Thomas Karos, Laurent Mauborgne, Stephan Wilhelm, and Christian Ferdinand. 2020. Safety-critical software development in C++. In Proceedings of the International Conference on Computer Safety, Reliability, and Security. Springer, 98\u2013110."},{"key":"e_1_3_2_18_2","volume-title":"VIGRA Computer Vision Library","author":"Koethe Ullrich","year":"2017","unstructured":"Ullrich Koethe. 2017. VIGRA Computer Vision Library. Retrieved from https:\/\/github.com\/zeromq\/libzmq"},{"key":"e_1_3_2_19_2","article-title":"Finding software bugs with the clang static analyzer","author":"Kremenek Ted","year":"2008","unstructured":"Ted Kremenek. 2008. Finding software bugs with the clang static analyzer. Apple Inc.","journal-title":"Apple Inc"},{"key":"e_1_3_2_20_2","volume-title":"Proceedings of the BSD Conference","volume":"5","author":"Lattner Chris","year":"2008","unstructured":"Chris Lattner. 2008. LLVM and clang: Next generation compiler technology. In Proceedings of the BSD Conference, Vol. 5."},{"key":"e_1_3_2_21_2","first-page":"273","volume-title":"Proceedings of the ACM\/IEEE Conference on Supercomputing (Supercomputing\u201991)","author":"Lee Jenq Kuen","year":"1991","unstructured":"Jenq Kuen Lee and Dennis Gannon. 1991. Object oriented parallel programming: Experiments and results. In Proceedings of the ACM\/IEEE Conference on Supercomputing (Supercomputing\u201991). IEEE, 273\u2013282."},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/2699834"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.3714"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/JAS.2017.7510349"},{"key":"e_1_3_2_25_2","volume-title":"MISRA C:2012 Amendment 2","author":"MISRA","year":"2020","unstructured":"MISRA 2020. MISRA C:2012 Amendment 2. MISRA. Retrieved from https:\/\/www.misra.org.uk\/Publications\/tabid\/57\/Default.aspx"},{"key":"e_1_3_2_26_2","volume-title":"CUDA by Example: An Introduction to General-purpose GPU Programming","author":"Sanders Jason","year":"2010","unstructured":"Jason Sanders and Edward Kandrot. 2010. CUDA by Example: An Introduction to General-purpose GPU Programming. Addison-Wesley Professional."},{"key":"e_1_3_2_27_2","volume-title":"LibSass\u2014Sass Compiler Written in C++","author":"Sass","year":"2018","unstructured":"Sass. 2018. LibSass\u2014Sass Compiler Written in C++. Sass. Retrieved from https:\/\/github.com\/sass\/libsass"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/2668119"},{"key":"e_1_3_2_29_2","volume-title":"LibSourcey","author":"Sourcey","year":"2018","unstructured":"Sourcey 2018. LibSourcey. Sourcey. Retrieved from https:\/\/github.com\/sourcey\/libsourcey"},{"key":"e_1_3_2_30_2","unstructured":"Bjarne Stroustrup K. Carroll and L. Aero. 2006. C++ in safety-critical applications: The JSF++ coding standard. https:\/\/www.phaedsys.com\/principals\/programmingresearch\/prdata\/SSE-Session-4_Stroustrup-Carroll.pdf"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1145\/2892208.2892235"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2014.2302311"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.4271\/2008-01-0664"},{"key":"e_1_3_2_34_2","volume-title":"Fast Light Toolkit","author":"The FLTK Team","year":"2019","unstructured":"The FLTK Team 2019. Fast Light Toolkit. The FLTK Team. Retrieved from https:\/\/github.com\/fltk\/fltk"},{"issue":"20","key":"e_1_3_2_35_2","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/3470644","article-title":"Pointer-based divergence analysis for OpenCL 2.0 programs","volume":"8","author":"Wang Shao-Chung","year":"2021","unstructured":"Shao-Chung Wang, Lin-Ya Yu, Li-An Her, Hwang Yuan-Shin, and Jenq-Kuen Lee. December 2021. Pointer-based divergence analysis for OpenCL 2.0 programs. ACM Trans. Parallel Comput. 8, 20 (Dec. 2021), 1\u201323. Issue 4.","journal-title":"ACM Trans. Parallel Comput."},{"key":"e_1_3_2_36_2","volume-title":"Cplusplus_Thread_Lib","author":"Yinghao Wu","year":"2013","unstructured":"Wu Yinghao. 2013. Cplusplus_Thread_Lib. Retrieved from https:\/\/github.com\/wyh267\/Cplusplus_Thread_Lib"},{"key":"e_1_3_2_37_2","volume-title":"ZeroMQ Lightweight Messaging Kernel","author":"ZeroMQ","year":"2019","unstructured":"ZeroMQ 2019. ZeroMQ Lightweight Messaging Kernel. ZeroMQ. Retrieved from https:\/\/github.com\/zeromq\/libzmq"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1109\/RTAS.2007.5"}],"container-title":["ACM Transactions on Cyber-Physical Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3611390","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3611390","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:37:09Z","timestamp":1750178229000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3611390"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,1,22]]},"references-count":37,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2025,1,31]]}},"alternative-id":["10.1145\/3611390"],"URL":"https:\/\/doi.org\/10.1145\/3611390","relation":{},"ISSN":["2378-962X","2378-9638"],"issn-type":[{"type":"print","value":"2378-962X"},{"type":"electronic","value":"2378-9638"}],"subject":[],"published":{"date-parts":[[2025,1,22]]},"assertion":[{"value":"2023-01-15","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-07-20","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-01-22","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}