使用SonarQube Web API分析项目遇问题:如何获取analysis key?
一、如何获取analysis key?
首先得明确:analysis参数对应的是项目已完成分析记录的唯一标识符,所以你的项目必须先有至少一次成功的分析记录才能拿到这个key。这里有两种简单的获取方式:
1. 通过Web API查询
调用GET api/project_analyses/search接口,传入你的项目key作为project参数,接口会返回该项目所有的历史分析记录。每个记录中的key字段就是你需要的analysis值。
示例请求格式:
GET api/project_analyses/search?project=你的项目key
返回的JSON数据里,analyses数组下的每个条目都会包含目标字段,比如:
{ "analyses": [ { "key": "AX123456789abcdef", "date": "2024-05-20T10:00:00+0000", // 其他字段... } ] }
这里的AX123456789abcdef就是你要找的analysis key。
2. 通过SonarQube UI界面直接复制
打开你的项目主页,点击顶部的Activity标签页,找到你需要的分析记录(比如最新的那次),点击记录右侧的三个点(更多选项),选择Copy analysis key,就能直接复制到这个标识符了。
二、能否通过Web方式分析项目?
首先要纠正一个误区:api/project_analyses/create_event接口不是用来触发项目分析的,它的作用是给已存在的分析记录添加自定义事件(比如标记某次分析为发布基线)。
如果想通过纯Web方式触发项目分析,有两种可行方案:
1. 借助CI/CD工具的Web触发能力
你可以在CI/CD平台(比如GitHub Actions、GitLab CI)中配置好sonar-scanner的分析流程,然后通过调用CI/CD平台的Web API来触发流水线,间接实现Web方式启动SonarQube分析。这种方式不需要在本地运行任何命令,完全通过HTTP请求触发。
2. 提交预生成的分析报告到SonarQube
SonarQube提供了POST api/ce/submit接口,可以直接提交预先生成的分析报告文件,步骤如下:
- 第一步:在任意环境中运行sonar-scanner生成分析报告(可以把这一步封装成一个后端接口或者无服务器函数):
sonar-scanner -Dsonar.analysis.mode=preview -Dsonar.report.export.path=sonar-report.json
- 第二步:调用
POST api/ce/submit接口,传入projectKey(你的项目key)和report(报告文件的二进制内容)参数,SonarQube后台会处理这份报告并生成分析结果。
注意事项
如果你的项目还没有任何分析记录,必须先完成至少一次分析(用上述两种方式之一),才能获取到analysis key来使用create_event接口。
内容的提问来源于stack exchange,提问作者Cuauhtémoc Pascacio

