logo Parasoft C/C++test 使用教程 我也要发布文档

加快MISRA,CERT与专用报告工作流程的合规性



在开发人员的日常工作流程中引入诸如MISRA或CERT之类的编码标准可能既费时又麻烦。在本文中,我们将探讨如何加快工具自动化、专用报告和工作流管理的合规性。

在主动软件开发过程中,典型的开发人员工作流程包括编码(新代码、重构或修复现有代码)、本地单元测试、将代码提交至源代码控制、发起持续集成(CI)构建以及从此类代码接收反馈。构建、修复错误,然后继续执行下一个功能。

在本文中,我将介绍如何通过将自动静态分析与专用报告和工作流管理一起利用,来成功地将编码标准引入到日常流程中。这将帮助您介绍编码标准合规性过程及其带来的所有好处,而又不会牺牲您的工作效率并使开发人员感到沮丧。

通过专用的合规性和编码标准报告,您还可以确保:

  • 流程的有效性(减轻开发人员的负担)
  • 政策的一致性(并监视团队进度)
  • 合规的正式方面(包括自动生成承包商或认证机构可能需要的合规文档)

让我们开始吧!我们将从测试配置开始。


定义测试配置


将静态分析应用于工作流时,您要做的第一件事是定义与您的项目相关的静态代码分析检查器的配置。团队负责人、架构师或功能安全员应定义测试配置,并带有一组静态分析检查程序以执行编码标准。这可能是一次性的过程,也可能是整个项目生命周期中的重复性行动。

如果您没有遵循特定编码标准的外部义务,我们仍然建议选择要遵循的主要标准,例如CERT或MISRA,并使用其他标准中的附加指南对其进行扩展,这可能对我们的开发很有价值。我们通常会看到依赖MISRA C 2012的用户将选定的CERT C准则包括在流程中,反之亦然。


IDE中发布测试配置


一旦准备好测试配置,就可以直接在其IDE中将其自动提供给所有团队成员,以便在软件开发期间继续使用。

为了加快合规性流程并利用自动静态分析的早期缺陷和安全漏洞检测的优势,工作流中的这一点至关重要。开发人员在代码创建后立即对其进行扫描。根据我们的观察,提供合规性扫描结果的延迟甚至10到20分钟也足够使开发人员失去注意力并继续进行其他工作。


签入代码以进行其他合规性扫描


下一步,开发人员检入他们的代码,这将触发CI构建,并在其中进行其他合规性扫描。

(如果有必要将静态分析扫描设置为代码签入的门,从而拒绝不符合标准的源代码签入,则经常会出现这些问题。根据我们的经验,这种方法不能很好地起作用。开发人员可以轻松地获得可以阻止因拒绝提交而造成的挫败感和团队合作精神,而相关的代码则无法按时集成;更好的工作流程不会阻止代码签入,而是假定会发现任何将其放入源存储库的违规行为CI级别。)

在配置项构建期间,将对源存储库进行全面扫描。如果已经在IDE中扫描了代码,为什么还要执行其他扫描?集成级别的扫描提供了一个安全网,这是必需的,因为某些准则只能在系统级别上被检测到,或者只是被忽略。此外,需要更完整的源系统视图来进行更复杂的静态分析(流分析),以帮助检测缺陷和安全漏洞。

用户IDE中的本地扫描和CI服务器中的中央扫描的结合确保了准确性和效率。


查看结果并确定操作


使用Parasoft C/C++test时,CI扫描的结果将发布到集中的报告和分析中心,可在Web浏览器中访问该中心、该浏览器存储和分析数据。

团队负责人可以使用Web门户来访问结果,了解合规性的当前状态以及深入研究特定的关注领域。然后,他们可以将任务分配给开发人员,以跟进分析过程中发现的违规行为。


解决问题


然后,开发人员解决这些问题,在本地扫描代码,并进行更正,从而启动另一个周期。


生成报告和文档


当项目接近完成并且团队接近其合规目标时,将自动生成合规报告,包括所使用的主要编码标准所需的所有文档。这些专用于该标准的专用报告可节省大量时间,从而减少了与创建和维护合规性文档有关的繁琐的手工工作。

下面是MISRA和CERT的示例。

MISRA合规报告

Parasoft C/C++test提供了专用报告,用于记录对MISRA C的遵从性。Parasoft Web门户上的仪表板提供了有关项目当前状态的概览视图,例如:

这些仪表板小部件均可以链接到更详细的视图,其中包含详细的违规报告,文件和源代码。

从这里,您可以自动创建记录MISRA合规性所需的报告,如《MISRA Compliance 2016:实现MISRA编码准则的合规性》中所述。自动化这些报告可以节省大量时间,从而大大减少了记录项目合规性所需的手动工作量。

SEI CERT C合规报告

尽管SEI CERT C标准不需要特定的合规性报告,但确实需要一个项目来记录对规则集的符合性(例如L1,L2和完全合规性。)Parasoft C/C++test包括一个专用的仪表板,以确保CERT C的符合性,看起来像这样:

团队负责人可以使用该仪表板视图来更深入地研究特定的关注领域,并为开发人员分配任务,以随着时间的推移提高合规性。在编码标准本身使用的风险评估框架的背景下查看结果(例如,看到特定的违反L1准则的行为),极大地简化了流程。自动执行此报告可以减少团队负责人和架构师为实现CERT C合规性而需要执行的分析量。


总结


为了加快合规性,三个要素是必不可少的:合规性策略的集中管理、针对使用IDE的开发人员的短反馈循环以及用于过程管理和报告生成的CI/CD扫描。通过静态分析实现自动化不仅是实现对规则集合规性的关键,而且还可以减少为审核员和评估员记录和报告合规性的手动工作。通过使用以Parasoft C/C++test为中心的以开发人员为中心的工作流程,团队可以使用专用的报告工具每天有效地评估和监视合规性,以帮助团队领导者管理和实现合规性。