vue代码提示需用volar并禁用vetur,eslint需显式配置规则并启用vue探针,sonarlint才能检测深层坏味道,clang-tidy不适用于vue项目。

Vue 文件的代码提示和坏味道检测不是开个插件就自动生效的两件事,得分开配、分别调、各自踩坑。
Vue 代码提示必须用 Volar,Vetur 已过时且冲突
VS Code 默认不识别 .vue 文件结构,script setup、defineProps、defineEmits 这些 Vue 3 特性在 Vetur 下直接失能。Volar 是 Vue 官方推荐的语言服务器(LSP),它才能真正解析组合式 API 的类型推导。
- 卸载 Vetur,否则会和 Volar 抢
.vue文件控制权,导致提示断连或跳转错乱 - 必须同时安装
Vue Language Features (Volar)和TypeScript Vue Plugin (Volar),后者负责把script setup里的类型信息透给 TS 语言服务 - 项目根目录下加
tsconfig.json或jsconfig.json,哪怕空内容也要存在——没有这个文件,Volar 不会启动 TS 支持,ref、computed的类型提示全丢 -
settings.json中禁用旧模式:"vetur.validation.script": false、"vetur.validation.template": false,避免残留配置干扰
ESLint 检测 Vue 坏味道要显式启用规则 + 配 probe
no-console、no-unused-vars、max-lines 这类规则在 ESLint 默认配置里是关着的,光装插件不写规则等于没装。更关键的是,Vue 单文件组件里 <script setup></script> 块默认不被扫描。
使用 `@ainative/vue-sdk` 为 Vue 3 应用添加 AI 聊天功能。适用于以下场景:(1) 安装 `@ainative/vue-sdk`,(2) 在 Vue 组件中使用 `useChat` 组合式函数,(3) 提供……
- 在
eslint.config.js或.eslintrc.cjs中手动开启规则,例如:"no-console": "warn"、"max-lines": ["warn", { "max": 120 }] - 必须在 VS Code 设置中加
"eslint.probe": ["javascript", "typescript", "vue"],否则 ESLint 根本不会加载<script setup></script>里的 JS/TS 内容 -
parserOptions.ecmaVersion至少设为"latest",不然箭头函数、可选链(?.)会被当成语法错误报出 - TypeScript 项目里
no-unused-vars容易误杀带下划线的参数(如(_, index) => {}),加配置{"argsIgnorePattern": "^_"}避免
SonarLint 才能抓到真正的 Vue 深层坏味道
ESLint 只管语法层,v-if 套 v-for、响应式依赖漏写、watch 缺 immediate、重复的 computed 逻辑……这些它看不见。SonarLint 是目前唯一能在 VS Code 里对 Vue 做语义级分析的工具。
- 必须开启
sonar.javascript.jsxEnabled: true,否则<template></template>里的 JSX 式语法(比如<component :is="xxx"></component>)不进分析范围 - 它能标出
if (loading) return; else return data;这种冗余分支,但不会帮你改——你得自己重构 - 检测到重复代码块时,会并排高亮两处,但不提供合并建议;这不是 bug,是设计如此
- 如果项目用了
defineComponent({})包裹选项式 API,SonarLint 对其响应式逻辑的识别率比script setup低一档,优先用组合式
Clang-Tidy 不参与 Vue 检测,别混搭
看到网上有人把 Clang-Tidy 和 Vue 拉一起配,纯属误导。Clang-Tidy 只处理 C/C++,它的规则(如 cppcoreguidelines-owning-memory)对 .vue 文件完全无效,且会因找不到 compile_commands.json 导致整个 ESLint/SonarLint 后端静默挂掉。
- Vue 项目里删掉所有
clang-tidy.*相关配置项,包括clang-tidy.buildPath - 如果项目同时含 C++ 模块(比如 Electron 原生模块),请用多根工作区(multi-root workspace)隔离 Vue 和 C++ 目录,避免规则互相污染
- 想查硬编码密码、密钥泄露?那是 SonarLint 的
sonar-security-audit规则集的事,不是 ESLint 能干的
"vue",script setup 就成黑盒;SonarLint 的 jsxEnabled 关着,模板逻辑漏洞就永远埋着。每层都得亲手拧紧,不能靠“应该可以”。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










