装完SonarLint没波浪线,主因是默认禁用、语言模式错误或规则未加载;需手动启用sonarlint.enabled、切换正确语言模式、安装对应语言插件并连接SonarQube服务器。

装完 SonarLint 没波浪线?不是插件坏了,是默认没开、语言模式不对、或规则根本没加载进来——多数人卡在这三步上。
sonarlint.enabled 为什么默认是 false
VSCode 插件市场里点安装完,SonarLint 实际处于“待命”状态,sonarlint.enabled 默认为 false。这不是 Bug,是 SonarSource 的设计:避免对非目标项目误报干扰。
- 打开设置(
Ctrl+,或Cmd+,),搜sonarlint.enabled,手动勾选启用 - 检查工作区根目录下的
.vscode/settings.json,删掉或注释掉类似"sonarlint.enabled": false的行 - 右下角状态栏若显示
Plain Text或JSON,点击它,手动切到对应语言模式(如Python、TypeScript) - TS 文件失效还可能是 TypeScript 语言服务被禁用,去扩展面板确认官方
TypeScript扩展已启用
Java/JS/Python 规则强度差异大,别当漏报处理
SonarLint 对不同语言的分析深度天然不一致,这不是配置能拉平的——它取决于底层引擎能力。
- Java 支持局部数据流分析:
list.get(0)会标红提示IndexOutOfBoundsException;但 Python 写my_list[0]就不报,因为sonar-python插件未装且未连服务器 - Java 项目要让泛型、资源泄漏类警告生效,必须配
"sonar.java.binaries": "target/classes" - JS/TS 若用了自定义 ESLint 配置,得显式设
"sonarlint.rules.eslint.enabled": true,否则只跑弱规则 - Python 想启用空指针、文件未关闭等规则,光装 SonarLint 不够,还得额外装
sonar-python插件,且仅在连接 SonarQube 后才激活
不连 SonarQube 就等于没进团队质量门禁
本地默认用的是开源 SonarWay 规则集,和你们 CI 流水线里实际执行的规则、阈值、质量门禁完全脱钩。你本地“全绿”的代码,PR 提交后很可能被门禁打回。
- 先确认三件事:
serverUrl能浏览器直访返回 200、有项目级 token(权限含Execute Analysis)、插件是 SonarSource 官方版 -
settings.json中必须用严格结构:"sonarlint.connectedMode.connections.sonarqube"是数组,哪怕只配一个也要包在[]里 - token 字段名只能是
token,写成authToken或userToken会静默失败 - 配完服务器,还要手动绑定工作区:
Cmd+Shift+P→SonarLint: Bind to SonarQube Project→ 选 connectionId → 选真实项目 ID(如backend-api,不是中文名)
Vue 项目要抓语义级 Bug 得开特定开关
ESLint 管不住的深层问题,比如 watch(() => state, cb) 漏依赖数组、if (loading) return; else return data; 冗余分支,得靠 SonarLint —— 但默认不看 Vue 模板和 setup 语法。
- 必须设
"sonar.javascript.jsxEnabled": true,否则<component :is="xxx">这类表达式不进分析范围 - 命令面板运行
SonarLint: Show Rules,手动启用vue相关规则(如sonarjs:S1125、sonarjs:S3776),默认只开基础 JS 规则 - 确保
sonarlint.excludedFolders没把src或components加进去 - Volar 是前提:卸载 Vetur,只装
Vue Language Features (Volar)+TypeScript Vue Plugin (Volar),否则类型推导断连,所有扫描都失准
最常被忽略的其实是语言服务就绪状态——没有正确加载的 TypeScript 或 Python 语言服务器,SonarLint 就像没装眼睛,再细的配置也白搭。


















