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

合并多个.NET SonarQube项目扫描结果以获取聚合统计

嘿,针对你在SonarQube 5.6.5上合并多个.NET项目扫描统计数据的需求,我整理了几个实用的方案,帮你搞定这个问题:

方案1:通过SonarQube Web API提取并手动合并数据

你之前没找到合适的API?其实SonarQube 5.6.5是有专门获取项目指标的接口的,具体用api/measures/component就能拿到你需要的核心数据,步骤如下:

  • 单个项目指标获取:
    调用接口时指定目标项目的key和要查询的指标代码,示例请求如下:
    GET api/measures/component?component=你的项目key&metricKeys=ncloc,bugs,code_smells
    
    这里的ncloc对应LOC(代码行数),bugs是漏洞数,code_smells是代码异味数,都是5.6.5版本支持的标准指标。接口会返回JSON格式的数据,你可以从中提取对应指标的数值。
  • 批量合并逻辑:
    你可以用PowerShell、Python这类脚本语言写个简单的批量处理脚本:
    1. 先把要合并的三个项目key列成一个列表
    2. 初始化total_loc、total_bugs、total_code_smells三个变量为0
    3. 遍历每个项目key,调用上述API并解析返回的JSON,把对应指标值累加到变量中
    4. 最后输出合并后的总统计数据
方案2:直接查询SonarQube数据库(高效快捷,需数据库权限)

如果你有SonarQube数据库的访问权限,直接查数据库会更高效。5.6.5版本的核心指标存在project_measures表中,你可以用以下SQL语句直接获取合并结果:

SELECT
  SUM(CASE WHEN m.metric_id = (SELECT id FROM metrics WHERE name = 'ncloc') THEN m.value ELSE 0 END) AS total_loc,
  SUM(CASE WHEN m.metric_id = (SELECT id FROM metrics WHERE name = 'bugs') THEN m.value ELSE 0 END) AS total_bugs,
  SUM(CASE WHEN m.metric_id = (SELECT id FROM metrics WHERE name = 'code_smells') THEN m.value ELSE 0 END) AS total_code_smells
FROM project_measures m
JOIN projects p ON m.project_id = p.id
WHERE p.kee IN ('项目key1', '项目key2', '项目key3')

注意:把SQL里的项目key1、项目key2、项目key3替换成你实际的三个项目key,执行后就能直接得到合并后的统计值。

方案3:升级版本后使用组合项目(可选)

如果后续有版本升级计划,SonarQube更高版本(比如7.9及以上)的**组合项目(Portfolio)**功能可以直接把多个子项目纳入其中,自动生成合并后的整体统计数据。不过如果暂时不能升级,前两个方案完全能满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:50:39