Want to see Parasoft in action? Sign up for our Monthly Demos! See Demos & Events >>

X

遵守MISRA C规则和编码标准

开发人员广泛地在汽车行业之外的企业中使用MISRA编码标准,如医疗和医疗设备、军事、航空航天、工业自动化、铁路和能源。这些标准为编写嵌入式C和C++代码(C++集成到Microsoft Visual Studio中)提供了一套指导方案或最佳实践,它们促进了安全和关键系统的安全、可靠和可移植代码的编写。

什么是MISRA?

汽车工业软件可靠性协会(MISRA)指的是被广泛采用的C和C++语言编码标准。MISRA提供了一套全面的编码指南,重点是保护应用程序免受已知的安全违规和安全漏洞。该协会将指导方针分为“规则”或“指令”。

规则包含编码需求的完整描述,通过静态分析,开发人员可以使用它来检查源代码是否符合准则,而不需要寻找任何其他信息。另一方面,指令为开发人员提供了一个重要的处方或开发指导,以便在他们通常不可能执行合规性检查时遵循。

MISRA是一个由汽车相关行业组成的团体,在20世纪90年代早期,作为英国安全关键系统研究计划的结果而聚集在一起。英国政府设立这个项目是为了解决汽车行业面临的一些挑战,因为汽车和卡车制造商在道路车辆的制造和操作中越来越多地使用MISRA。Parasoft是MISRA团体的成员之一。

对于C语言开发,最新的MISRA C: 2012标准支持C90、C99、C11和C18语言规范。目前的版本,MISRA C: 2012(有时写成MISRA C 2012或MISRA C2012),已经发展了好几年,MISRA C: 2012的修正案2于2020年发布。第三修正案预计将于2022年上映。对于C++编程语言,当前的MISRA标准是MISRA C++ 2008。

注意:MISRA是一组用于安全编码的规则,而不是用于测试API(应用程序编程接口)。

“MISRA”、“MISRA C”及MISRA Consortium Limited的注册商标。 ©The MISRA Consortium Limited, 2021。 保留所有权。

MISRA的优势

当开发人员实现MISRA指南时,它帮助他们交付安全、可靠的代码,这些代码具有永久的好处。MISRA符合影响产品的成功和寿命,同时减少劳动力成本和上市时间。

提高代码质量,减少缺陷成本

在产品开发过程中尽早防止代码缺陷,以免它们演变成更昂贵的挑战。

满足行业流程标准

Parasoft提供MISRA静态分析,作为ISO26262、DO-178C、IEC62304、IEC61508、EN50128等流程标准推荐的解决方案。

满足静态分析安全性测试(SAST)

将MISRA安全代码规则和指令作为SAST策略的一部分正确地融入到软件开发生命周期中。

从MISRA扩展并构建您自己的自定义编码指南

使用我们的RuleWizard为您的组织创建自定义的编码标准配置。

将CERT等编码标准与MISRA相结合,以获得最佳的代码质量

Parasoft提供了MISRA等标准的汇合,以及任何和所有我们支持的编码标准:CERT、CWE、OWASP、UL 2900等

将MISRA SA纳入您的CI/CD工作流程

Parasoft的MISRA静态分析可以轻松集成到您的CI/CD管道中,并通过持续测试快速交付高质量、安全的软件。

智能测试AI和ML

Parasoft整合了人工智能和机器学习,以提高团队MISRA静态分析工作流的生产率,标记并优先处理团队首先需要修复的规则违反。

帮助满足MISRA要求的解决方案

部署Parasoft的产品套件,无论您在哪个开发环境中工作,都可以对代码进行静态分析。

MISRA遵从性最佳实践

当谈到MISRA遵从性时,我们推荐几个非常有益的实践。下面是一些需要考虑的方法的列表。

执行代码/同行评审

除了遵循MISRA之外,召集您的软件工程师同事,并系统地检查彼此的代码错误和编码风格的冲突。经验表明,这种活动可以加速生产,并极大地提高代码质量。

代码清晰

遵循MISRA可以帮助您编写易于阅读和理解的代码。不要太聪明,编写晦涩难懂或容易被误解的代码。您不希望其他工程师或您自己花费大量时间试图破译代码中的bug。

代码的健壮性

当您实现MISRA遵从性时,它可以帮助您编写可靠的代码,不仅可以处理正常的情况,也可以处理异常的情况。这包括一些消极的场景,当应用程序遇到无效数据时,需要做好准备。

代码的可移植性

遵循MISRA有助于程序员在编写代码时考虑到可移植性,因为可移植性代码,如POSIX和ANSI C,允许轻松和快速地迁移到其他平台。开发人员可以用最少的代码更改来适应其他编译器或其他操作系统。当迁移到另一个操作系统或目标时,很多时候会有经济或商业机会。

代码复杂性

MISRA遵从性帮助编码人员编写没有大量分支的代码。分支越多,代码的复杂性就越高,代码中潜在bug的数量也就越多。

代码的可重用性

遵循MISRA有助于您编写可移植的代码,您可以在未来的产品或项目中重用这些代码。这提高了生产力,减少了劳动力和测试成本。

正确记录偏差

任何MISRA指南的偏差都需要详细的文档说明,包括指南、范围、理由、安全保证、后果和缓解措施。

减少MISRA干扰

编码人员可能会以触发MISRA违规的方式编写一些代码构造。Parasoft提供了一种方法,可以故意过滤掉这些干扰。

采用MISRA合规

提出遵守MISRA的一个好处是,安全团队可以在项目的任何软件开发阶段引入和使用这些指导方针,即使项目不完整或部分编码,这些指导方针也是有效的。

引入MISRA遵从性的最大挑战是大量代码可能产生大量警告。因此,当将MISRA法规遵从性集成到一个项目中时,公司应该把重点放在让团队尽快高效上。

公司还应该将注意力集中在最小化静态分析警告压倒团队的可能性上。随着实现MISRA遵从性成为开发人员日常工作的一部分,开发人员可以更快地分析结果并更有效地修复bug。

产品成熟度方面的考虑

考虑正在开发的产品的成熟度也是很重要的,因为这将影响公司采用MISRA法规的方式。

市场上现有的项目

MISRA遵从性的推荐方法被称为“沙子中的线”方法。在较高的层次上,这种方法意味着开发人员在开发新代码时改进它,同时将不太重要的警告作为技术债务推迟。

当前开发的现有项目

MISRA遵从性的推荐方法被称为“沙子中的线”方法。在较高的层次上,这种方法意味着开发人员在开发新代码时改进它,同时将不太重要的警告作为技术债务推迟。

新项目

开发人员可以从一开始就将MISRA遵从性集成到他们的开发环境中,在编写代码时确保高质量的标准。在这种情况下,采用的方法被恰当地命名为“绿地”。

Screenshot of Parasoft's reporting and analytics of MISRA C 20212 Compliance showing pie graphs and other data reflecting code compliance.

自动合规报告示例

Parasoft 的分析仪表板具有自动合规性报告。对于安全和安全关键型应用,您需要在安全关键型系统上使用我们的TÜV SÜD认证解决方案。

为什么选择Parasoft?

Parasoft C/C++test在开发阶段早期检测复杂的MISRA遵从性运行时类问题,而不需要执行昂贵的运行时测试。C/ C++test通过代码分析执行路径,并发现MISRA合规问题,如空指针解引用、除以零、内存泄漏和安全漏洞,如指针操作数的算术、缓冲区溢出、不可到达的代码和stdlib系统函数。

数据的自动化后处理和高级报告策略。随着时间的推移,很容易看到MISRA合规的结果,即使在处理大型代码库和遗留代码时,代码的可见性通常是具有挑战性的,因此您可以快速关注新添加的代码的质量。

通过自动跟踪MISRA遵从性的小部件,用户可以动态地查看软件遵从性过程,并可以轻松地为代码审计和认证目标生成自动报告。

常见问题

将TÜV认证的解决方案纳入您的软件实现阶段,该解决方案根据MISRA标准分析已知的安全性和应用程序安全性违规。

在现代敏捷开发中,您还可以将MISRA分析和遵从自动化到您的持续集成和持续交付(CI/CD)工作流中。确保了解所有发现的违规行为,并确保解决它们。如果有任何偏差,按照MISRA标准的要求彻底记录它们。

最后,您需要为 MISRA 合规性认证提供以下工件。

  1. MISRA指南执行计划
  2. MISRA指南重新分类计划
  3. MISRA偏差报告
  4. MISRA合规总结

最新版本MISRA C:2012经过了几年的发展,包括158条MISRA C规则和17条指令,共175条指导方针。2020年发布的MISRA C:2012修正案2将标准扩大了2条规则。

静态分析是在没有执行的情况下检查源代码的过程,通常是为了发现错误或评估代码的安全性、安全性和可靠性。这意味着软件团队和软件安全团队可以对部分完成的代码、库和第三方源代码使用静态分析。

静态分析工具帮助团队遵循编码标准,如MISRA C/ C++、AUTOSAR C++ 14、SEI CERT或您自己的自定义配置。