必须确认三件事:SonarQube服务URL可访问且返回200;已创建具备Execute Analysis权限的项目级token;VS Code已安装官方SonarSource插件。

连接 SonarQube 服务器前必须确认的三件事
不连服务器,SonarLint 就永远用的是本地内置的 SonarWay 规则集,和你们 CI 流水线里实际跑的规则完全不一致——你本地“没报错”的代码,很可能在 sonar-scanner 扫描后被门禁打回。
连之前先检查:
-
sonarqube服务 URL 能否从浏览器直接访问(比如https://sonar.your-company.com),且返回 200 - 你有项目级 token(不是账号密码),通过
Account → Security → Generate Tokens创建,权限需含Execute Analysis - VS Code 已安装官方
SonarSource发布的插件,不是 “SonarQube for IDE” 或其他第三方变体
settings.json 里怎么写连接配置才生效
VS Code 的 settings.json 中必须用 sonarlint.connectedMode.connections.sonarqube 字段,且结构严格——少一个括号或引号都会静默失败,右下角图标也不亮。
正确写法示例(注意是数组,即使只配一个):
{
"sonarlint.connectedMode.connections.sonarqube": [
{
"connectionId": "prod",
"serverUrl": "https://sonar.your-company.com",
"token": "sqp_abc123def456..."
}
]
}
常见错误:
- 把
token写成authToken或userToken—— 不识别,连接失败 - 漏掉外层方括号
[...],导致整个配置被忽略 -
serverUrl末尾加了/(如https://.../)—— 部分版本会 404
绑定工作区到具体 SonarQube 项目
光配好服务器还不够。每个 VS Code 工作区(即打开的文件夹)需要显式绑定到 SonarQube 上的真实项目,否则仍走默认规则。
操作路径:Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Win/Linux)→ 输入 SonarLint: Bind to SonarQube Project → 选中刚配的 connectionId(如 prod)→ 等待列表加载 → 选中目标项目(ID 通常形如 my-app-backend,不是中文名)
成功后,状态栏右下角 SonarLint 图标会显示连接状态,并附带项目 ID;同时工作区根目录生成 .sonarlint/ 文件夹,里面存有绑定元数据。
注意:如果列表为空,说明 token 权限不足,或项目未启用分析(检查 SonarQube 后台 Project Settings → Permissions 是否对你可见)。
为什么连上了还是没同步规则?重点看这三点
连接成功 ≠ 规则立刻生效。真实环境中最常卡在这几个环节:
-
sonarqube项目是否启用了 Quality Profile?进后台Quality Profiles页面确认 Java/JS/Python 对应语言的 profile 已激活,且至少有一条规则设为Active - VS Code 是否打开了正确的文件类型?比如绑的是 Java 项目,但你正在编辑
.py文件——Python 规则不会加载,除非该 SonarQube 项目也配置了 Python profile - 本地插件是否拉取了最新规则?首次绑定后需等待几秒到一分钟(看右下角图标动画),手动触发一次保存(
Cmd+S)可强制刷新缓存;若长期无响应,删掉.sonarlint/重绑
真正容易被忽略的是:SonarQube 服务器上改了规则,VS Code 不会自动热更新——必须重启工作区(关掉再重开文件夹),或执行 SonarLint: Update Connected Mode Configuration 命令。


















