惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
L
LangChain Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
量子位
G
GRAHAM CLULEY
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CERT Recently Published Vulnerability Notes
The Hacker News
The Hacker News
C
Cisco Blogs
Scott Helme
Scott Helme
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
V
V2EX
博客园 - 三生石上(FineUI控件)
T
Tor Project blog
P
Proofpoint News Feed
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
PCI Perspectives
PCI Perspectives
博客园_首页
L
LINUX DO - 最新话题
IT之家
IT之家
有赞技术团队
有赞技术团队
博客园 - Franky
Hacker News: Ask HN
Hacker News: Ask HN
Last Week in AI
Last Week in AI
The Cloudflare Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题
AWS News Blog
AWS News Blog
S
Security Affairs
T
Tailwind CSS Blog

博客园 - Trinitytec

为何应立即实施 SBOM,以满足《网络弹性法案》(CRA)的合规要求 什么是CWE?概述CWE排名前25项 为什么Rust嵌入式开发仍然需要强大的静态分析 面向产品安全的威胁建模与Secure SDLC实践 让Google Test满足功能安全要求:VectorCAST/QA构建可量化的测试覆盖率分析体系 FOSSID如何快速且准确找到项目中引用的第三方代码 如何利用FOSSID 管控AI生成代码合规性? CRA生效在即,ONEKEY携手创提将网络安全合规压力化为市场红利 借助 Rust + Perforce 静态分析工具QAC和Klocwork降低关键风险 eVTOL核心机载软件系统满足DO-178C适航合规的工程实践 云端自动化测试--通过基于服务器的自动化测试实现SDV创新 开发人员需要了解的关于MISRA C:2025®的信息 AI辅助代码修复优化左移开发 在AWS上部署CANoe--打造企业级ECU云端流水线 AI生成代码系列:在不干扰开发者体验的情况下集成开源代码片段检测 CVE资金中断:安全团队如何做好准备? AI生成代码系列:开源代码片段检测的有效方法 CVE是什么?常见漏洞披露概述 如何生成完整的软件物料清单(SBOM)? 如何选择一个好的软件成分分析工具? Perforce公司发布《2025汽车软件开发报告》 重新审视中国的GB标准(44495 – 44497) 硬件逆向工程101: 电路板基础知识 HydraLink—面向工程师、研究人员和爱好者的易用型汽车以太网接口 车载网络:现代汽车的数字心跳 最具影响力的汽车黑客攻击事件 网络安全全速前进:McLaren迈凯伦汽车如何应用Cybellum驱动卓越的产品安全? 浅谈TARA在汽车网络安全中的关键角色
将Perforce QAC与CI/CD流水线集成实现代码“质量门控”管理
Trinitytec · 2025-08-26 · via 博客园 - Trinitytec

一、引言

在敏捷开发与 DevOps 理念深度渗透的产业环境下,嵌入式与汽车电子软件开发面临更严苛的交付挑战。汽车电子系统代码规模已突破亿行级别,嵌入式设备固件更新频率提升至每月3-5次,传统瀑布式开发模式难以应对复杂功能迭代与功能安全要求。根据 AUTOSAR 联盟统计,车载 ECU 系统中78%的功能失效源于编码阶段的逻辑错误与内存泄漏,而 ISO 26262功能安全标准强制要求缺陷密度低于0.1个/千行代码。在自动驾驶、智能座舱等关键域控制器开发中,建立覆盖需求分析到 OTA 升级的全生命周期质量保障体系,通过静态代码分析与持续集成验证,成为满足 ASPICE 流程认证、降低召回风险的核心技术路径。

Perforce QAC软件作为业内领先的代码合规和缺陷静态分析软件,为了提供更完整企业化代码质量管理平台方案,自v2025.1版本起特别增强了其与CI/CD流水线集成的功能,本文旨通过实例分享如何将QAC与CI/CD流水线集成实现代码质量门控管理。

图片1

二、Perforce QAC和CI/CD简介

Perforce QAC是一款业内领先的专业级代码静态分析工具,专注于 C/C++ 代码质量保障,在软件开发流程中扮演着“代码质量守门人”的角色。在合规性检查方面,QAC严格遵循MISRA C/C++, AUTOSAR C++14, CERT, CWE等权威编码标准,自动检查不合规代码。在缺陷检测方面,QAC凭借强大的数据流分析能力,可以精准定位空指针、内存泄漏、数组越界和内存问题等隐患。QAC在质量度量方面,可以生成多种类型的报告,通过圈复杂度等量化指标,帮助用户评估代码的可维护性与扩展性。QAC现已广泛应用于各类嵌入式软件、汽车电子、航空航天、工业控制等高安全性要求领域。

CI/CD 是现代软件开发的核心支柱之一,它代表持续集成(Continuous Integration)和持续交付(Continuous Delivery)或持续部署(Continuous Deployment)。它们共同构成了一个自动化流程,旨在以更快速、更可靠的方式构建、测试和发布软件。常用的CI/CD系统有Jenkins、GitHub Actions、GitLab CI/CD、CircleCI、Gitee CI/CD等。CI/CD 是现代软件开发中实现高效交付的关键流程,通过自动化手段将开发、测试、部署等环节紧密串联,形成一个高效运转的闭环体系。

QAC和CI/CD二者结合,可以形成“质量门控”与“效率引擎”的双重驱动。通过自动化流水线,实现代码提交、构建、测试到部署的无缝衔接,帮助开发者实现“左移测试”,将代码错误扼杀在摇篮阶段。

三、将QAC与CI/CD 集成的基本步骤

1. 前置准备

需要准备一台符合QAC配置要求的服务器,并安装最新版本的QAC软件;安装并部署用于项目代码的编译工具链,确保代码可在该服务器上正常编译构建;预先搭建好CI/CD环境,本文将以GitLab CI/CD系统为例进行说明,其他用户可以基于自有的CI/CD系统实现。

2. 实施方法

首先将安装了QAC的服务器作为GitLab CI/CD流水线运行所需的独立Runner, 并将Runner和GitLab关联起来。如下图所示:

图片2

然后在CI/CD流水线编辑器中增加QAC的相关执行命令,包括被测工程的创建、代码及配置的同步、执行代码分析以及结果向 Validate 上传等。QAC支持各种命令行执行方式,用户可以按照需要添加执行命令,当流水线被触发时,QAC将按照预设脚本进行执行。

之后,根据需要在流水线编辑器设置门控触发条件,比如在代码提交给指定分支时触发,或在发起合并请求时触发,具体可依据实际情况进行配置。本示例中选择提交代码与发起合并请求时均会触发流水线。

图片3

四、代码提交时的质量门控

通过代码中的错误示例检验以上设置是否生效。

如本示例所示,在项目代码中,添加一段数组越界的示例代码:有一个包含 10 个元素的数组line,在循环过程中,将变量i同时用作循环的判断条件及数组line的下标。在代码文件第24行,当i的值等于10时,访问数组line会出现越界情况。

图片4

保存修改后的代码,并提交至代码仓库的 test 分支。代码提交后,GitLab CI/CD自动触发流水线进行构建,在构建过程中,QAC会按照预设命令执行。当QAC检测到代码中的违规或者质量错误时,流水线将自动终止并显示失败状态 --不符合质量要求的代码被禁止提交进代码仓库。如下图所示:

图片5

流水线执行完毕后,如果本次流水线执行失败,用户可以通过浏览器登录到Validate中央报告平台查看QAC检测出的代码问题的详细信息。

图片6

五、代码合并时的质量门控

在代码分支合并过程中,同样可触发CI/CD流水线。本示例中,用户发起代码合并时触发了QAC可对源分支代码进行分析,分析完成后,原分支代码被检测出存在代码错误,本次合并请求被自动阻止 --不符合质量要求的代码被禁止合并入代码主分支,起到了代码质量门控的作用。

图片7

结语

时至今日,代码静态分析已经成为大多数企业把控软件代码质量最常用的手段之一。当研发团队关注静态分析工具检测能力的同时,如何在企业内部形成自动化的管理体系已经成为有效发挥静态分析作用的关键问题。当多数传统的代码静态分析工具还停留在桌面端自发使用、手动触发或人工报告的模式时,Perforce QAC和Klocwork均已经可以无缝、无感地集成到软件全生命周期中。QAC在开发人员日常的开发过程中及时、自动化地对代码错误进行检测、对提交或合并到代码仓库的代码进行门控管理,并自动报告和通知检测结果,最大程度地减少了工具对开发流程的干扰、降低了人为主观因素造成的不确定风险,加快了软件发布流程,最终形成一整套完善的代码质量自动化管理平台方案。

如需了解更多相关信息,欢迎联系我们或者申请试用