CheckMarx中文网站 > 使用教程 > Checkmarx如何设置扫描排除路径 Checkmarx排除目录内文件仍被扫描是什么原因
教程中心分类
Checkmarx如何设置扫描排除路径 Checkmarx排除目录内文件仍被扫描是什么原因
发布时间:2026/10/28 16:44:08

  填了排除目录,扫描结果中却仍出现相关文件,需要检查过滤阶段、扫描器和实际路径。围绕“Checkmarx如何设置扫描排除路径,Checkmarx排除目录内文件仍被扫描是什么原因”,下面以Checkmarx One英文界面及其CLI为例说明;旧版CxSAST的路径规则需要另行核对。

  一、Checkmarx如何设置扫描排除路径

 

  让SAST跳过目录,用扫描器过滤;需要文件不上传,则使用适用的打包过滤。

 

  1、在项目中设置SAST目录过滤

 

  先核对项目名称,修改后重新发起扫描。

 

  ①在【Applications and Projects】页面找到目标项目,点击操作图标→【Project Settings】。

 

  ②进入【Project Rules】,点击【+Add Rule】,选择【SAST】及【Folder/file filter】对应选项。

 

  ③输入排除模式,例如!/generated/,排除各层级generated目录及其内容,保存设置。

 

  ④需要排除多个目录时,用英文逗号连接模式;已有过滤规则时先保留副本,再修改同一参数。

 

  2、根据目录层级选择模式

 

  过滤器使用路径模式,需区分直属文件和子目录。

 

  ①排除源码根目录下的generated目录时,使用!generated/**。

 

  ②排除任意层级同名目录时,使用!/generated/。

 

  ③需要连同子目录一起排除时,不只写!**/generated/*;单星号模式可能留下更深层内容。

 

  ④检查排除项前的!。漏掉后可能变成包含条件,不能仅填写目录名称就认定已经排除。

 

  3、流水线扫描时传入对应参数

 

  CLI的--sast-filter只针对SAST。若要递归处理打包范围,应检查当前CLI是否支持--file-filter-ext。

 

  ①在现有扫描任务中设置--sast-filter'!/generated/',确认参数传给实际执行的cx scan create。

 

  ②本地目录或ZIP扫描需要在上传前排除时,使用--file-filter-ext'!/generated/'。

 

  ③不用普通--file-filter承担复杂子路径匹配;它的路径能力有限,不能与扩展参数混为一谈。

 

  ④检查流水线最终传入的参数,按使用的Shell处理引号,避免!、*被提前解释或删除。

 

  4、核对源码来源是否支持该方式

 

  仓库地址与本地目录支持的过滤方式不同。

 

  ①查看--file-source指向本地目录、ZIP文件还是Git仓库地址。

 

  ②直接扫描Git仓库时,使用扫描器专用过滤;--file-filter和--file-filter-ext不适用于这一来源。

 

  ③需要扫描前移除文件时,先检出代码,再以本地目录为扫描来源,并核对检出分支和提交。

 

  二、Checkmarx排除目录内文件仍被扫描是什么原因

 

  先选一份仍出现的文件,记录完整路径、扫描编号和扫描器类型,再沿配置链检查。

  1、匹配的根目录与预想不同

 

  ZIP多了一层外部目录时,根目录模式可能失配。

 

  ①查看文件在本次扫描源码中的实际路径,对照上传目录或压缩包结构。

 

  ②核对generated/file.js与project/generated/file.js是否被当成同一根路径处理。

 

  ③根据实际层级修正模式;确实要排除所有同名目录时,再改用!/generated/。

 

  ④检查大小写、英文逗号及多余空格,不直接复制本地磁盘绝对路径作为跨环境过滤条件。

 

  2、项目设置被扫描参数覆盖

 

  网页与CLI都设置了过滤时,要检查【Allow Override】,不能只看网页里是否保存成功。

 

  ①返回【Project Settings】→【Project Rules】,检查该过滤项的【Allow Override】。

 

  ②允许覆盖时,对照流水线中的--sast-filter,确认是否用另一组值替换了项目配置。

 

  ③不允许覆盖时,不依赖CLI修改该扫描器过滤;需要调整的内容在有权限的配置层修改。

 

  ④检查流水线模板、插件附加参数和API请求,确保排除项传给了本次扫描。

 

  3、排除了一个扫描器,另一个仍在处理

 

  SAST、SCA和IaC Security需要分别核对过滤配置。

 

  ①查看异常记录来自哪个扫描器,核对是否误把SCA结果当成SAST文件分析结果。

 

  ②根据目标检查--sast-filter、--sca-filter或--iac-security-filter,不在一个参数中代替所有扫描器设置。

 

  ③使用本地SCA Resolver时,检查Resolver的--excludes配置;云端解析使用的--sca-filter不能直接代替它。

 

  ④区分“文件仍在上传包里”和“文件被该扫描器分析”。项目级过滤不负责从上传包删除源码。

 

  4、查看的是旧扫描或其他副本

 

  修改配置不会改写旧扫描结果。同一份代码还可能出现在复制目录、构建产物或另一个模块中。

 

  ①按扫描编号、启动时间、分支和提交标识打开新结果,不继续使用旧报告。

 

  ②比较告警文件的完整路径,检查是否属于未排除的另一份副本。

 

  ③配置调整后执行一次完整SAST扫描作为对照,避免只凭增量扫描中的历史表现判断。

 

  ④使用CxSAST 9.x时,核对对应版本文档;9.2—9.5与9.6及之后版本的过滤语法不同,不直接照搬Checkmarx One示例。

 

  三、Checkmarx排除配置修改后怎么验证

 

  用目录内外的样本检查过滤效果。

 

  1、检查目录内外的样本文件

 

  测试时保留一份应分析的文件,检查是否意外排除了整个范围。

 

  ①在目标目录直属位置、子目录内各选一份文件,再选一份目录外文件。

 

  ②使用相同提交、相同扫描器配置运行扫描,核对日志及可获取的文件分析信息。

 

  ③使用扫描器过滤时,确认目标文件被跳过;使用打包过滤时,检查准备的上传内容是否已经移除目标文件。

 

  ④确认目录外文件仍参与分析,保存排除模式、CLI版本和验证用的扫描编号。

  总结

 

  希望“Checkmarx如何设置扫描排除路径,Checkmarx排除目录内文件仍被扫描是什么原因”这篇文章能帮到大家。安全检查要融入开发流程,离不开工具与项目实际情况的配合。团队成员对检查范围有共同认识,沟通时才能少一些猜测,处理问题也更有依据。项目规模逐渐扩大后,这些日常维护工作会变得更重要。希望大家在使用中积累经验,让安全工作与开发协作衔接得更自然,为产品的持续交付提供支持。如果有Checkmarx相关需求,欢迎联系我们进一步了解。

176 5129 0128