QAC质量门禁的作用,是在代码进入主分支前拦住新增缺陷。它并不是简单统计“总共有多少条告警”,而是把当前CI分析与基线构建比较,再按规则判断哪些问题不能放行。处理“QAC质量门禁怎么设置QAC质量门禁未通过时怎么定位问题”,先把基线和筛选条件定准,后面的排查会清楚很多。
一、QAC质量门禁怎么设置
常见做法是将QAC项目连接到Validate,在项目或流的CI构建页面配置门禁条件,再由流水线运行CI分析。
1、先准备基线构建
CI门禁需要知道“哪些问题是这次新增的”。因此,项目至少要有一次完整集成构建作为比较基线。
①确认QAC项目已经连接到Validate。
②同步项目文件、编译参数和预处理宏。
③执行一次完整分析。
④运行集成构建并上传结果。
⑤在Validate中确认基线构建状态正常。
⑥再开始配置CI差异分析。
运行CI构建还需要对应的Build许可证。没有基线时,任务可能完成分析,却无法正确比较新增问题。
2、在Validate中填写门禁条件
①进入目标【Project】或【Stream】。
②打开【CI Builds】页面。
③找到【Quality Gate】设置区域。
④点击编辑图标。
⑤输入用于筛选缺陷的查询条件。
⑥保存后创建一次测试构建。
门禁条件使用与【Issues】页面相同的查询方式,可以按规则体系、问题状态、规则编号等信息筛选。
例如只拦截某个规范中仍处于待分析或待修复状态的问题,可设置类似条件:
taxonomy:'MISRA C 2023(C99)'reference:mand status:+Analyze,Fix
配置质量门禁需要项目管理权限。流默认继承项目级条件,单独修改后才会使用自己的门禁规则。
3、把门禁接入CI流水线
①在构建节点完成代码编译。
②同步最新编译数据库或构建日志。
③为当前任务生成唯一构建名称。
④执行CI构建命令。
⑤读取命令返回码。
⑥返回码不符合要求时终止流水线。
命令可以写成:
qacli validate cibuild-P<项目目录>-b<构建名称>
构建名称建议带上分支、提交号或流水线编号。名称重复时,后面查看历史结果会很乱。
4、不要把门禁条件设得过宽
刚开始配置时,别把所有规则、全部历史问题都放进门禁。
可以按以下顺序逐步收紧:
(1)先拦截新增的高严重级别问题。
(2)再加入强制编码规则。
(3)稳定后补充复杂度和其他质量指标。
(4)旧问题继续放在基线中治理。
一上来要求存量问题全部清零,很多项目会长期无法通过,门禁也容易被团队直接绕开。
二、QAC质量门禁未通过时怎么定位问题
流水线显示失败后,先看QA·CLI返回码。不同返回码代表的问题完全不同,不能都当成代码缺陷处理。
1、先看返回码属于哪一类
常见返回码包括:
(1)返回码0:分析完成,没有触发异常。
(2)返回码4:CI构建成功,但发现了新增诊断。
(3)返回码6:没有取得可用于比较的基线。
(4)返回码7:质量门禁未通过。
(5)返回码15:无法连接Validate服务器。
(6)返回码18:许可证获取失败。
(7)返回码29:质量门禁无法应用。
其中,返回码4只说明出现新增问题,不一定表示门禁失败;返回码7才表示新增问题命中了当前门禁条件。
2、从CI构建进入失败问题列表
①登录Validate。
②打开目标项目或流。
③进入【CI Builds】。
④找到失败的构建名称。
⑤查看右侧显示的门禁条件。
⑥点击失败问题链接进入【Issues】页面。
系统会按当前门禁条件过滤出导致失败的问题。此时重点看规则编号、文件、代码行、状态和首次出现的构建,不用在全部告警中慢慢翻。
3、确认问题是不是本次代码引入
①查看问题所在文件是否属于本次修改。
②检查对应代码行的提交记录。
③对比基线构建中是否已有同类问题。
④确认构建节点使用了正确分支。
⑤核对编译器、宏和包含路径。
⑥重新同步后再分析一次。
如果CI环境与集成构建环境不一致,同一份代码也可能产生不同结果。编译器版本、安装路径和项目配置最好保持统一,尤其别让本地基线用一套宏,流水线又用另一套。
4、返回码6或29怎么处理
返回码6通常不是代码质量问题,而是比较基础没有准备好。
①确认项目已有完整集成构建。
②检查当前项目是否连接到正确的Validate项目。
③查看基线构建是否成功完成。
④重新拉取项目配置。
⑤再运行CI构建。
返回码29则要检查门禁查询是否有效。字段名称、规则体系名称或查询语法写错后,门禁可能无法执行。
三、定位后怎样处理并重新验证
找到失败问题后,要判断是代码缺陷、误报,还是经过评估后可以接受的偏差。
1、按问题状态完成处置
①确认问题对应的规则和代码上下文。
②真实缺陷直接修改代码。
③误报填写分析依据。
④允许偏差时记录理由和审批信息。
⑤将问题状态更新为已修复、已引用或延期。
⑥重新运行CI分析。
门禁条件里若只包含【Analyze】和【Fix】状态,问题完成引用或延期处理后,通常就不会继续命中同一条筛选条件。是否允许这样处理,要以项目质量流程为准。
2、重新构建时清理旧结果
①清理当前QAC分析数据。
②重新同步项目文件。
③确认修改已经进入构建工作区。
④使用新的构建名称运行CI任务。
⑤查看返回码和门禁结果。
⑥确认失败问题不再出现。
旧工作区、旧编译数据库和旧分析结果混在一起,很容易造成“代码已经改了,门禁还在报”的假象。排查这种情况时,干净构建通常比连续重跑更有效。
3、定期检查门禁规则
①查看门禁失败频率。
②统计经常触发的规则。
③检查规则是否符合当前项目阶段。
④清理失效的查询条件。
⑤新规范启用前先在测试流验证。
质量门禁不是设完就不再动。项目规则、语言版本和缺陷状态发生变化后,门禁条件也要一起调整。
总结
“QAC质量门禁怎么设置QAC质量门禁未通过时怎么定位问题”的重点,是把新增问题、基线结果和门禁条件分开看。返回码看清楚,失败链接点进去,问题范围很快就能缩小。希望本文能为大家配置和排查QAC质量门禁提供参考,如需进一步了解相关内容,欢迎联系咨询。