Sonar Runner:如何将指定项目的问题导出至MS-Excel
解决Sonar-WS-Client导出指定项目问题的方案
嘿,我明白你现在的困扰了——用sonar-ws-client导出Sonar问题到Excel,结果拿到的是别的项目的数据,不是你要的目标项目对吧?这其实是个很常见的小疏漏:你的查询没有指定目标项目的标识,Sonar默认会返回所有符合严重程度条件的项目问题,自然就串了项目。下面给你一步步修正的方案:
第一步:先拿到目标项目的Project Key
你得先获取目标项目的项目键,这个在SonarQube平台里很容易找到:
进入你要导出的目标项目 → 点击顶部的「项目设置」→ 在页面里找到「项目键」字段;或者直接看项目主页的URL,比如
http://localhost:9000/dashboard?id=my-target-project里的my-target-project就是项目键。
第二步:修正代码的两个关键点
你的代码有两个需要调整的地方:
- SonarClient的构建方式不对:分开调用
client.builder().login()和client.builder().password()是不会生效的,因为每次调用builder()都会生成一个新的构建器实例,之前的设置会被覆盖; - IssueQuery缺少项目过滤:这就是导出错项目的核心原因,必须给查询加上目标项目的键。
修正后的完整代码片段如下:
String login = "admin"; String password = "admin"; // 正确构建SonarClient:链式设置所有参数后再build SonarClient client = SonarClient.builder() .url("http://localhost:9000") .login(login) .password(password) .build(); // 创建查询,同时指定目标项目键和严重程度 IssueQuery query = IssueQuery.create() .projectKeys("你的目标项目键") // 把这里替换成你实际拿到的项目键 .severities("CRITICAL", "MAJOR", "MINOR"); IssueClient issueClient = client.issueClient(); // 接下来就是你原来的获取issues并导出Excel的逻辑...
额外小提示
- 如果需要导出多个项目的问题,直接传入多个项目键就行,比如
.projectKeys("project-a", "project-b"); - 你还可以给查询加更多过滤条件,比如只导出未关闭的问题:
.statuses(IssueStatus.OPEN),或者指定特定规则,让导出的结果更精准。
内容的提问来源于stack exchange,提问作者Srinivasan
相关产品推荐
相关产品推荐

