QAC中文网站 > 最新资讯 > QAC增量扫描不生效为什么 QAC增量扫描范围怎么限定
QAC增量扫描不生效为什么 QAC增量扫描范围怎么限定
发布时间:2026/01/27 09:24:45

  QAC做增量扫描的前提,是分析结果与配置会被保存在同一个QAC工程里,下一次运行只重分析发生变化的源文件、依赖文件或配置项。如果你每次都把工程清掉、把工作区删掉,或把配置频繁改动,工具就只能退回到全量分析,甚至表现成你以为的增量不生效。把问题拆成工程是否被复用、配置是否稳定、扫描入口是否正确,基本都能定位到具体原因并给出可复现的修复动作。

 

  一、QAC增量扫描不生效为什么

 

  增量不生效通常不是功能坏了,而是你当前的运行方式让QAC无法复用上一次的分析结果。建议先从最容易被忽略的工程清理与配置变更入手,再检查CI环境是否把缓存当成垃圾清走了。

 

  1、工程被清理或用了强制清空参数

 

  如果你在脚本里执行过【qacli analyze】并带了【--clean】或在GUI里清掉了工程结果,等同于把历史分析结果删掉,下一次只能重新跑全量;文档明确说明清理会移除分析结果,从而在下次运行时强制触发分析。

  2、CI每次构建都删除工作区导致缓存丢失

 

  在Jenkins里常见做法是启用【Delete workspace before build starts】或流水线调用【cleanWs】把工作区清空,这会把QAC工程目录一并删掉,增量自然无法复用;Workspace Cleanup插件也说明它可以在构建前后删除工作区内容。

 

  3、分析配置被更换或被清空触发大范围重分析

 

  当你在配置面板里点击【Import】导入新的ACF,或点击【Clear】移除现有设置,再点【Save】保存,这类动作会改变分析配置,QAC会把配置变化视作需要重分析的依赖条件,常见表现就是改了一个宏或工具链选项却触发全量。

 

  4、头文件或生成文件每次构建都在变化

 

  很多团队会生成版本头文件或配置头文件,里边带构建时间、Git哈希或自增版本号,导致每次构建头文件都变,从而让大量源文件变成依赖变化而被重分析;这会让你误以为增量不生效,实则是每次都在触发大面积依赖变更。

 

  5、用错分析入口导致没有走工程级增量逻辑

 

  如果你每次都用单文件调试式分析,或用不属于工程的原始源分析方式,只能得到一次性的结果,无法享受工程内的改动检测;工程级分析的默认行为是仅重分析变更文件、依赖文件或配置项,而不是无条件全量。

 

  二、QAC增量扫描范围怎么限定

 

  限定范围要分清两件事:本次只跑一部分文件,还是长期把某些目录排除在分析外。前者用文件清单更稳,后者要通过工程内容与同步方式控制。建议先用命令行把范围收紧跑通,再把同样的范围固化到CI。

 

  1、只分析单个文件用于快速定位

 

  在工程目录下执行【qacli analyze】并在双横线后指定文件路径,例如先确认工程根目录,再运行【qacli analyze-P.-f--src/test_1.cxx】;文档说明双横线后可以直接指定单个文件进行选择性分析。

 

  2、用文件列表限定一组文件范围

 

  新建一个文本文件作为filelist,每行写一个相对源根目录的路径,然后执行【qacli analyze-P<工程目录>-f--files】;文档给出【--files】可以读取文件列表并只分析列表内文件。

  3、先用工程级增量跑一遍再叠加文件范围

 

  如果你希望默认只分析变更文件,但偶尔需要只跑某个模块,建议两步走:日常任务用【qacli analyze-P<工程目录>-f】让它按变更检测执行;定位或加急时再切到【--files】或双横线单文件方式,把分析范围压到最小。

 

  4、把生成目录与第三方代码从范围控制上隔离

 

  对自动生成文件与第三方库,优先从构建流程上隔离到独立目录,并在filelist里不加入这些路径;如果必须存在于同一仓库,至少保证生成文件不在每次构建都发生无意义变动,避免把范围限定做得再小也被依赖变化拖大。

 

  5、用输出进度核对是否真的按范围执行

 

  每次运行后检查控制台进度输出,确认实际被调度分析的文件数量与预期一致;如果你用的是filelist但仍出现全量,优先回查是否混用了【--clean】、是否工程路径指错、或filelist路径解析相对源根目录发生偏移。

 

  三、QAC增量扫描怎么在CI里稳定复用

 

  增量要稳定,核心是工程目录要可持续复用、配置要尽量稳定、生成依赖要减少无意义变更。把这三件事固化到流水线,你的扫描时间和误报波动会明显下降。

 

  1、把QAC工程目录从清理范围里排除

 

  在Jenkins配置里检查是否启用了【Delete workspace before build starts】或流水线是否调用【cleanWs】;如果必须清理,至少把QAC工程目录放到不删除的路径,或在清理步骤里排除该目录,避免每次都从零开始。

  2、避免在常规构建里触发配置重置

 

  不要在流水线里频繁导入新ACF或执行清空配置的动作,确需变更时用版本化方式管理ACF,并在同一次变更里把变更原因、影响范围与回归结果写进记录;配置面板的【Import】与【Clear】会直接改变工程配置,应当视为需要审计的变更。

 

  3、把生成头文件改成按需更新

 

  对版本信息建议改为仅在版本发布或必要场景更新,避免每次构建都写入时间戳;同时把生成逻辑做成内容无变化则不落盘,减少无意义的依赖变更,才能让工程级改动检测真正只命中变更文件。

 

  4、用工程级增量命令做日常入口

 

  日常跑全工程时,统一用【qacli analyze-P<工程目录>-f】作为入口,让QAC按默认规则仅重分析发生变化的源文件、依赖文件或配置项;文档明确这一模式会分析自上次运行以来发生变化的内容。

 

  总结

 

  QAC增量扫描不生效为什么,最常见的根因是工程结果被【--clean】或工作区清理删除,或配置通过【Import】与【Clear】发生变更,或生成头文件每次都在变化;QAC增量扫描范围怎么限定,优先用【qacli analyze】的双横线单文件与【--files】文件列表把范围压到可控,再把工程目录复用与配置稳定固化到CI里,你就能同时得到可预测的扫描时间和可解释的分析结果。

135 2431 0251