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

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就是项目键。

第二步:修正代码的两个关键点

你的代码有两个需要调整的地方:

  1. SonarClient的构建方式不对:分开调用client.builder().login()和client.builder().password()是不会生效的,因为每次调用builder()都会生成一个新的构建器实例,之前的设置会被覆盖;
  2. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:13:48