Checkmarx的增量扫描本质是SAST在已有全量基线之上,只聚焦上次全量扫描以来的改动代码,并把与改动相关的邻近代码一并纳入分析,以便更快出结果。要让它稳定生效,你需要先跑通一次全量扫描,再把增量开关与范围过滤配置到项目规则、流水线或CLI里,最后用扫描类型与历史记录验证本次到底跑的是增量还是全量。
一、Checkmarx增量扫描怎么开
增量扫描的前提是你已经有一次可用的全量扫描结果作为对照基线,否则系统无法判断哪些文件属于改动范围。实际落地时建议先用界面手动跑通一次,再把同样的开关固化到项目规则或流水线里,避免每次靠人手勾选。
1、先完成一次全量扫描建立基线
进入Checkmarx One主菜单【Resource Management】→【Scans】确认该项目存在一次Full Scan记录,若没有先在项目侧发起Full Scan,再回到扫描历史确认已完成,因为Incremental Scan只能在初始Full Scan完成后运行。
2、在项目扫描时勾选增量开关
进入项目→发起扫描时勾选【Incremental Scan】复选框,再提交扫描任务;执行完成后在扫描历史里查看【Scan Type】是否显示Incremental Scan,用它验证本次确实走了增量路径。
3、用项目规则把默认行为改成增量
进入【Project Settings】→【Rules】为SAST scanner创建规则,在规则里启用Incremental相关设置,并明确是否允许在单次扫描里覆盖该设置,这样你不需要每次手工勾选。
4、用CLI开启增量扫描并与配置文件一致
在CLI侧启用SAST增量参数,常见方式是把scan.config.sast.incremental设置为true,或使用等价的CLI开关,这样流水线每次运行都会按增量模式发起扫描。
5、用Config as Code把增量参数固化到仓库
在项目仓库放置cx.config文件,把incremental配置为开启,让扫描配置随代码版本受控管理,后续换机器或换流水线也能复用同一口径。
二、Checkmarx只扫改动代码怎么配置
只扫改动代码的核心是两层含义,扫描请求仍会上传完整应用,但SAST分析会以改动为中心做增量计算,并会把与改动相关的邻近代码纳入闭包范围,所以它不是严格意义只扫描一个差异补丁。你要做的是保证增量判定能成立,并把不需要的目录与文件类型从扫描输入里剔除,让扫描更聚焦。
1、先接受增量扫描的边界口径
增量扫描会扫描上次全量扫描以来的改动代码,并包含与改动相邻的相关代码闭包,同时每次增量的改动会相对上次全量逐步累积,这决定了你需要定期做全量刷新基线。
2、用扫描历史确认系统判定为增量而非全量
进入【Resource Management】→【Scans】找到该项目记录,核对【Scan Type】是否为Incremental Scan;如果你勾选了增量但结果仍显示Full Scan,先不要改规则,先按第三节去排查阈值与基线条件。
3、用阈值规则控制何时自动回退到全量
在Checkmarx One里,系统会计算本次新增源代码占比,低于阈值才会跑增量,文档示例提到小于7%会运行增量,超过阈值即使勾选Incremental也会跑全量,你需要据此规划提交粒度与全量频率。
4、用SAST过滤参数剔除无关目录与文件
在扫描配置里设置scan.config.sast.filter,按包含与排除规则限定扫描范围,例如用!前缀排除构建产物与第三方目录,用逗号串联多个模式,先把噪声文件排掉再跑增量,结果会更集中也更快。
5、开启推荐排除规则减少无效扫描输入
在扫描配置里启用recommendedExclusions,让系统自动应用预定义排除集,减少工具对明显不需要扫描的文件夹与文件类型做无效计算,适合团队先快速落地统一口径。
三、Checkmarx增量扫描只扫改动代码不生效怎么排查
增量不生效通常表现为你明明勾了增量,最后却跑成全量,或者增量覆盖看起来很少。排查时只抓一个主线,把它当作增量判定条件未满足来处理,先确认基线,再确认改动占比阈值,最后确认过滤配置没有误伤关键路径。
1、确认是否确实存在可用的全量基线
进入【Resource Management】→【Scans】检查最近一次Full Scan是否成功完成,若项目从未完成过Full Scan,或最近全量失败,增量就无法按预期判定。
2、确认本次改动占比是否触发全量回退
如果你本次提交改动很大,系统会按阈值判断并回退到Full Scan,文档示例说明新增源代码超过阈值时即使选择Incremental也会执行全量,你需要拆分变更或先跑一次全量再回到增量节奏。
3、确认过滤规则是否把入口代码排掉了
检查scan.config.sast.filter是否误排除了实际业务代码目录,尤其是用目录排除时容易把子目录一并排除,建议先临时放宽filter跑一次验证,再逐步收紧到稳定可用的范围。
4、确认你看的项目与分支是否一致
在扫描记录里核对【Project】与【Branch】列,确保你在同一分支上建立了全量基线并在同一分支上触发增量,否则你会看到像是增量失效,实际是分支口径不一致。
5、定期插入全量扫描刷新基线避免漂移
增量扫描会累积上次全量以来的变化,时间久了准确性与覆盖会受影响,实践上建议按次数或按里程碑插入Full Scan,把基线刷新后再继续增量节奏。
总结
Checkmarx增量扫描怎么开,先跑通一次Full Scan建立基线,再在项目扫描、项目规则、CLI或Config as Code里启用incremental开关,并用扫描历史里的Scan Type验证是否真的跑了增量。Checkmarx只扫改动代码怎么配置,要理解增量仍以全量上传为前提且包含闭包范围,再用阈值规则控制何时回退全量,用scan.config.sast.filter与recommendedExclusions把无关目录排除掉;若增量不生效,就按基线是否存在、改动占比是否超阈值、过滤是否误伤、分支口径是否一致这条线快速收敛问题。