CheckMarx中文网站 > 使用教程 > Checkmarx扫描结果导出失败怎么办 Checkmarx SARIF报告怎么下载
教程中心分类
Checkmarx扫描结果导出失败怎么办 Checkmarx SARIF报告怎么下载
发布时间:2026/06/01 13:40:15

  做Checkmarx结果导出时,失败最常见的原因不是扫描没跑出来,而是导出走了不适配的通道。很多团队一边在Web里点报表,一边又想拿到SARIF,结果发现Web报表只给PDF、JSON、CSV,SARIF反而要走CLI或CI产物。把你当前用的是Checkmarx One Web报表、还是CLI结果导出先分清,再按对应路径排查和下载,效率会高很多。

  一、Checkmarx扫描结果导出失败怎么办

 

  导出失败先别急着重跑扫描,先确认扫描状态、导出入口、格式可用性这三件事。很多报错其实是选了不可用格式或扫描引擎组合不支持,修正选项就能恢复导出。

 

  1、先确认该Scan已完成再导出

 

  在项目的Scan History里找到对应扫描,确认状态为Completed后再点报表生成或下载,未完成时导出容易出现空文件或生成失败。

 

  2、在Web里生成报表时先核对格式下拉框是否可选

 

  打开报表向导后,在Format下拉框里确认你要的格式是否可选,Web自定义报表通常提供PDF、JSON、CSV,不要在这里强求SARIF,方向选错就会反复失败。

 

  3、CSV导出失败重点看是否勾选了不支持CSV的扫描器组合

 

  如果你选择了SCS等不支持CSV的扫描器,CSV选项会被置灰或无法生成,此时应改选PDF或JSON,或把Scanners选择范围调整为支持CSV的类型后再生成。

 

  4、报表生成范围过大时先缩小Severity与Status再试一次

 

  在报表向导里把Severity从全量收敛到High与Medium,再把Status限定为New或Recurrent中的一种,减少结果集规模后再生成,能显著降低生成超时或下载失败的概率。

 

  5、走CLI导出时遇到失败先把返回数量从默认全量改成分段

 

  CLI的results show默认会把结果尽量一次性带出来,文档也说明最多可到一万条,你可以先用filter里的limit与offset分段导出,确认分段能成功后再合并处理。

 

  6、导出看似成功但拿到的文件不完整时回查输出路径与输出名

 

  CLI导出支持--output-name与--output-path,输出目录不明确或权限不足会导致文件落不到预期位置,你要把输出路径固定到当前目录或一个明确可写目录,再按同一命名规则导出便于核对。

 

  二、Checkmarx SARIF报告怎么下载

 

  SARIF更偏向集成与交换格式,官方文档给出的主流方式是通过Checkmarx One CLI或CI插件参数生成文件,再从本地目录或CI产物里下载。你按自己团队的落地方式选一种即可。

 

  1、用Checkmarx One CLI直接生成SARIF文件到本地

 

  在已配置好Checkmarx One CLI认证的前提下,用results show导出指定scan-id,并把report-format设为sarif,同时指定输出名与输出路径,例如把输出路径设为当前目录,生成后会得到以.sarif结尾的文件。

 

  2、CLI命令写法按参数分行排查更快

 

  你可以把命令拆成多行执行或先用最小参数跑通,再逐步加上输出名与输出路径,推荐顺序是先跑--scan-id确认能出默认JSON,再加--report-format sarif生成SARIF,最后加--output-name与--output-path固定文件名与目录。

  3、通过CI插件生成SARIF并作为构建产物下载

 

  如果你在CI里跑Checkmarx One扫描,可以在Additional params里加入--report-format sarif,并按需加--output-path指定输出目录,流水线运行后把生成的.sarif文件作为产物归档,然后在构建产物页面点击文件名下载。

 

  4、TeamCity场景用Artifacts页直接点文件名下载

 

  在TeamCity里编辑Checkmarx AST Scan步骤,在Additional parameters填入--report-format sarif并指定输出名,再在General Settings的Artifact paths里把该文件路径配置成产物,构建结束后到Artifacts页点击文件名即可下载。

 

  5、GitHub Actions场景把SARIF上传到Code scanning再留一份原始文件

 

  GitHub Actions示例里会在additional_params里加入--report-format sarif并指定输出路径,然后可选择上传SARIF到Code scanning,同时建议把生成的cx_result.sarif也作为workflow artifact保留一份,方便你后续做二次处理。

 

  6、如果你在Web里找不到SARIF下载入口属于正常现象

 

  官方文档的分工很明确,Web自定义报表偏PDF、JSON、CSV,SARIF主要通过CLI或CI集成输出,你需要把导出路径切到CLI results或流水线产物,不要在Web报表里反复点下载。

 

  三、Checkmarx导出失败与SARIF文件校验

 

  拿到文件不代表就能被下游平台识别,尤其是SARIF要对接代码扫描平台或制品系统时,文件内容与路径字段不符合要求也会被判为不可用。把校验动作前置,能省掉很多来回重导与重跑。

 

  1、先用CLI导出一份小范围结果做冒烟验证

 

  用results show的filter把Severity与Status先压缩到少量结果,生成一份小的SARIF文件,确认下游能正常导入或展示后,再放大范围导出全量,排查效率更高。

 

  2、确认文件扩展名与输出文件名一致

 

  CLI会按--output-name生成对应扩展名文件,例如Demo_Sarif_Report.sarif,若你在目录里没找到,优先回看--output-path是否写对,以及执行用户对目录是否有写权限。

 

  3、结果条数接近上限时用limit与offset分批导出并统一命名

 

  当结果集很大时,分批导出能减少一次性生成失败的风险,命名可以用同一前缀加批次号,后续合并或分批导入都更清晰。

 

  4、CI里下载不到SARIF先看产物归档规则是否匹配输出路径

 

  很多导出失败其实发生在归档阶段,文件已经生成但Artifacts路径没写对,按TeamCity文档把报告文件名与保存路径在Artifact paths里写清楚,再到Artifacts页下载即可。

 

  5、需要更精细的报表维度时区分标准报告与自定义报告通道

 

  results命令生成的是标准扫描报告格式,Web与API还支持新的自定义报告类型,你要先明确是要标准扫描结果交换格式SARIF,还是要面向审计的自定义报表,再选对应通道导出,避免把两类需求混在一次导出里。

  总结

 

  Checkmarx导出失败先分清你走的是Web自定义报表还是CLI结果导出,Web侧主要是PDF、JSON、CSV并受扫描器组合影响,CLI侧可用results show并支持limit与offset分批导出。要下载SARIF,优先用Checkmarx One CLI通过--report-format sarif生成.sarif文件,或在CI里把SARIF作为构建产物归档后在Artifacts页下载,按输出路径与命名规则做好校验,基本就能把导出与下载跑顺。

135 2431 0251