如何将SonarQube的measures数据导出至Excel?无需查库方案(7.0嵌入式DB)
SonarQube Measures数据导出至Excel的方法及嵌入式数据库场景说明
嘿,我来帮你搞定这两个问题:
一、将SonarQube中的'measures'数据导出至Excel的几种方式
1. UI直接导出(最适合快速操作)
这是最省心的方式,完全不用写代码:
- 打开你的SonarQube项目,切换到Measures标签页
- 先调整好你需要的指标视图:比如筛选特定的指标分组、排序方式,或者添加/移除某些指标
- 找到页面右上角的Export按钮(一般是个向下的下载箭头图标),点击后选择Excel选项,浏览器会自动下载包含当前页面所有可见数据的Excel文件,直接就能用
2. API批量导出(适合大量数据或自动化需求)
如果需要批量获取多个项目的measures数据,或者要定期导出,用SonarQube的Web API更灵活:
- 先构造API请求,比如获取单个项目的核心指标:
你可以根据需要添加更多metricKeys,比如GET /api/measures/component?component=你的项目key&metricKeys=bugs,vulnerabilities,code_smells,coverage,duplicated_lines_densityncloc(代码行数)、sqale_rating(技术债务评级)等 - 把返回的JSON数据转换成Excel:可以用在线的JSON转Excel工具,或者用Python脚本自动化处理,举个简单的示例:
import pandas as pd import requests # 替换成你的SonarQube实例地址和项目key sonar_base_url = "http://localhost:9000" target_project_key = "your_project_key" # 按需添加需要的指标 target_metrics = "bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density" # 发送API请求 response = requests.get( f"{sonar_base_url}/api/measures/component", params={"component": target_project_key, "metricKeys": target_metrics} ) measure_data = response.json() # 整理数据格式 output_rows = [] for item in measure_data['component']['measures']: output_rows.append({ "指标名称": item['metric'], "指标值": item['value'], "单位/周期值": item.get('period', {}).get('value') or item.get('unit', '') }) # 保存为Excel文件 df = pd.DataFrame(output_rows) df.to_excel("sonar_measures_export.xlsx", index=False)
二、SonarQube 7.0嵌入式数据库场景:无需查询数据库即可导出measures指标
答案是完全不需要直接操作嵌入式H2数据库,而且非常不推荐这么做:
- SonarQube的嵌入式H2数据库只是底层存储,官方已经通过UI和API把measures标签页的所有指标都开放出来了,你用前面说的UI导出或者API调用就能拿到所有需要的数据
- 直接操作H2数据库不仅麻烦(需要开启远程连接、熟悉复杂的表结构),还容易误操作导致数据损坏,尤其是测试场景下,用官方提供的导出方式既安全又高效,完全能满足需求
内容的提问来源于stack exchange,提问作者Jared Collins




