本文来源perforce.com,由Perforce中国授权合作伙伴、DevSecOps解决方案提供商-龙智翻译整理。
2025年3月,嵌入式开发领域迎来重要更新——MISRA C:2025®正式发布!作为Perforce中国授权合作伙伴,龙智一直密切关注、及时分享这一关键标准的演进,助力企业构建更安全、可靠的嵌入式系统。
本文,我们将带您了解:MISRA C:2025有何重要变化?对于依赖MISRA®标准开发安全关键型系统的企业来说,新版本意味着什么?如何通过静态分析工具(如Perforce QAC、Klocwork)快速实现合规?
MISRA C:2025概述
2025年3月,MISRA C:2025在德国纽伦堡举办的Embedded World大会中正式发布。与前版MISRA C:2023相比,MISRA C:2025的实质性更新较少,但它基于MISRA C:2023的高效框架,引入了重要的政策调整、增强功能和新准则,进一步简化了开发可靠、稳健的安全关键型代码的流程。
MISRA C:2023涵盖哪些内容?
MISRA C软件开发指南旨在确保使用C语言编写的软件安全可靠。这些指南为开发者提供了一系列需要遵循的规则和指令,并允许开发者使用工具(如Perforce的静态分析工具Perforce QAC 和 Klocwork)来帮助检测任何违规行为。
在MISRA C:2025发布之前,MISRA C:2023是最后一个主要版本,共包含221条准则,涵盖C90、C99和C11/C18。
MISRA C:2025更多是对现有指南的增量升级,但它为支持下一版C语言标准和开发环境的更新奠定了基础。MISRA C:2025仍涵盖C90、C99和C11/C18,同时对现有准则进行了合理优化和重组,以保持连续性,同时也增加了新的准则,使现行准则总数达到225条。
MISRA C:2025采用了较新的滚动发布开发模式,取代了独立的修订文档形式,以便开发者能够更好地与文档及其迭代进行交互。
MISRA C:2025有哪些变化?
新增规则
MISRA C:2025新增了5条指南。其中一条较为有趣的新规则是Rule 19.3,它通过将“一致使用某个变体成员”与更严格的“禁止更改活动成员(可能有安全风险)”区分开来,放宽了对联合体(union)的使用限制。这条规则原本是一个全面的限制,但现在对于常规“安全”的用法,仅作为建议性规则。
MISRA C:2025还包括其他新规则,例如关于声明的规则,以及从基本类型系统中提取指针的规则,以使其更加连贯。
规则调整
对一些现有规则进行了扩展。例如,指针转换规则(Rule 11.3、11.4、11.6)现在考虑到了”intptr_t “类型,为处理整数和地址的整数表示提供了更多可能性。在之前的版本中,地址操作是全面禁止的,而这种操作对于一些低级系统功能(如指针标记)来说是必不可少的。
规则重组
MISRA C:2025对部分准则进行了重组,将规则归入到更适合的类别中,并重新调整了规则和指令之间的定位。这一重组工作为下一版本的扩展奠定了坚实基础。
引入“已删除”和“不适用”规则
这是首次在新版发布中引入“已删除”和“不适用”规则。
已删除的规则编号在后续版本中不会被重新启用。因此,当检测工具针对旧版本代码提示”违反Rule 21.2″时(该规则已被重新编号并从当前版本中删除),这个警告将特指MSIRA C:2023标准中原来的Rule 21.2含义,不会与其他规则产生歧义。
这是一个重要的里程碑,因为MISRA现在认识到,随着分析技术和审查理念的发展,并非所有的历史规则都具有价值。(例如,备受争议的Rule 15.5在MISRA C:2025中被停用)。
新的”不适用”类别还允许用户在必要时重新启用该规则。
使用Perforce QAC/ Klocwork实现MISRA合规性
MISRA一直在不断审查C和C++语言的规则和指南。虽然每个版本的设计都旨在让代码更安全、更可靠,但开发人员仍然需要了解这些规则,检查代码是否违规,并持续监控代码以确保符合MISRA标准。
选择合适的静态代码分析工具可以加速实现MISRA合规。Perforce静态分析工具QAC(原Helix QAC)和Klocwork能够自动扫描代码,发现违规行为,并立即识别不合规的代码,从而在代码投入生产前修复违规代码。
Perforce QAC还具有新的合规性模块,完全涵盖MISRA C:2025,帮助您轻松满足并记录 MISRA C:2025的合规性。
即刻咨询Perforce中国授权合作伙伴、DevSecOps解决方案提供商-龙智,申请QAC MISRA C:2025合规性模块的应用演示,或免费试用Perforce QAC与Klocwork。
官网:www.shdsd.com
电话:400-666-7732
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。