持续验证与持续集成/持续交付

PC-lint Plus、VectorCAST和Squore确保开发流程符合规范

将验证集成到持续集成(CI)管道中,意味着缺陷会在产生时立即被发现,从而避免其扩散到集成构建或下游组件中。

对于嵌入式软件团队而言,将验证集成到 CI/CD 管道中意味着每次代码提交都会自动触发静态分析、回归测试执行、覆盖率测量以及质量门检查。问题会在引入后的几分钟内被发现,此时代码还很新,修复起来也比较简单。

管道中的静态分析

PC-lint Plus作为命令行工具运行,可集成到任何CI/CD环境中。其完全可自定义的输出格式,使得构建系统、问题跟踪器和面板都能利用分析结果。由于直接对源代码进行操作,且无需构建或执行,因此可以在每次提交时运行,且开销极小。

PC-lint Plus将这种可视化功能直接延伸至开发环境。在编写代码时,分析结果会以内联形式显示,使引入缺陷或违反规范的开发者能够立即察觉问题,而非在后续的构建报告中才发现。在编辑器中运行的分析与在管道中运行的分析完全一致,采用相同的规则配置。

PC-lint Plus会在代码库中一出现,就在引入这些问题的构建过程中,立即标记出编码标准违规、空指针解引用、安全漏洞及其他缺陷类别。

自动化测试执行

VectorCAST可与Jenkins、Azure DevOps、GitLab及其他持续集成(CI)框架集成。其服务器版针对自动化环境中的并行测试执行进行优化,可在不阻碍交互式测试开发的情况下,在多种配置下运行测试。

基于变更的测试

对于大型代码库而言,在每次提交时执行完整的测试套件并不现实。VectorCAST中的基于变更的测试(CBT)通过识别能够覆盖受变更影响的代码段的最小测试用例集,并仅重新执行这些测试,从而解决这一问题。

测试覆盖率的完整性得以保持。CBT能在保持持续集成(CI)周期短暂的同时,针对每次变更的影响提供快速反馈。如有需要,可安排完整的回归测试。在两次完整回归测试之间,CBT能针对变更的影响提供快速反馈,既保持CI周期的短暂,又确保测试覆盖的完整性。

质量门与趋势监控

单次测试运行反映的是单个构建的状态。Squore则监控项目的整体发展轨迹,追踪:各版本之间代码覆盖率是否有所提升、静态分析问题是否在累积,以及代码库是否正按计划在集成前满足覆盖率要求。

Squore通过实施质量门控机制,防止不符合要求的代码进入后续构建流程。当某次提交会导致代码覆盖率回归至低于预设阈值,或静态分析问题数量超过配置限制时,该门控机制将停止构建并向团队发出警报。趋势分析能及早发现质量下滑的迹象,在问题演变为导致发布延迟的隐患之前及时预警。

合规红利

每次自动测试运行、静态分析执行和覆盖率测量,都为不断扩大的证据库增添新内容,这些证据表明哪些内容已得到验证、验证的彻底程度以及验证的依据。这些证据是开发过程的副产品,而非在审计前因压力而仓促拼凑的独立合规活动。

对于遵循ISO 26262、DO-178C、IEC 61508或IEC 62304标准的团队而言,其实际影响是深远的。以往项目结束时需要花费数周时间才能整理出的认证证据,如今在整个项目过程中持续存在。覆盖率缺口在尚且微小之时便已显现。静态分析债务不会累积到难以管理的程度。审计变成对现有记录的审查,而非一场赶工产出记录的竞赛。

PC-lint Plus、VectorCAST和Squore均已通过其所支持标准的认证,生成的输出结果可直接作为验证证据被采纳,无需额外进行资格认证工作。将这些工具集成到开发流程中,意味着合规性证据是工程实践的自然产物,而非独立的项目。