You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过REST API调用提取Coverity中的指定状态报告?

Coverity通过REST API提取指定名称状态报告的实现方案

你之前调用的项目视图类接口无法拿到目标状态报告数据,核心原因是状态报告属于聚合报表模块,和普通视图内容走两套独立接口,具体可落地的实现方案如下:

前置要求

仅Coverity 2020.12及以上版本提供对应公开REST API,更低版本需要使用旧版SOAP接口,无公开REST方案。
所有接口请求需要携带认证信息:

  • 账号密码认证:请求头使用标准Basic Auth,填入平台登录的账号密码
  • API Key认证:Basic Auth用户名填api,密码填你生成的API Key

具体实现步骤

  • 匹配目标报告获取唯一ID
    接口不支持直接按名称拉取报告,需要先拉取所有状态类报告列表做名称匹配:

    GET /api/reports/v1/reports?queryType=STATUS
    

    接口返回结果中包含所有状态报告的name(报告名称)和id(报告唯一标识),找到你指定名称对应的id即可。

  • 触发报告动态生成
    状态报告是实时聚合计算的,不存在预存的静态结果,需要先触发生成任务:

    POST /api/reports/v1/reports/{上一步拿到的reportId}/executions
    Content-Type: application/json
    
    {}
    

    如果需要限定统计范围(比如指定项目、统计时间区间、快照范围),可以在请求体JSON中加入对应过滤参数,无特殊过滤传空对象即可。调用成功后会返回本次执行的executionId。

  • 轮询确认报告生成状态
    报告生成需要一定计算时间,轮询调用以下接口查询进度:

    GET /api/reports/v1/reports/{reportId}/executions/{executionId}
    

    当返回结果中的status字段为COMPLETED时表示生成完成,若为IN_PROGRESS则间隔3-5秒重试即可,普通规模项目的报告生成时间一般在10秒以内。

  • 拉取最终报告内容
    生成完成后调用以下接口获取最终数据:

    GET /api/reports/v1/reports/{reportId}/executions/{executionId}/content
    

    可以通过请求头Accept控制返回格式:

    • Accept: application/json:返回结构化JSON数据,适合程序二次解析
    • Accept: text/csv:返回CSV格式文件,适合导出做本地分析
      返回内容和前端页面看到的状态报告字段完全一致,包含各严重等级缺陷计数、新增/修复/遗留缺陷统计、按组件/负责人维度的聚合数据。

之前调用接口无效的原因说明

你尝试调用的/api/viewContents/projects/v1/All%20Projects?projectId=*属于普通视图内容接口,仅会返回项目列表的原始属性字段,不会做状态报告需要的多维度聚合计算,因此无法拿到你需要的报表数据。


内容的提问来源于stack exchange,提问作者monstermind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 08:51:29