eslint配置未生效的首要原因是vscode未加载配置文件,需确认项目根目录存在eslint.config.js(推荐)或.eslintrc.cjs,且导出符合linter.config类型;检查底部eslint图标是否亮起,不亮则插件未激活。

ESLint 配置文件没生效?先确认它是不是被 VSCode 真正加载了
VSCode 的 ESLint 插件根本不会自己跑分析逻辑,它只负责把保存、输入等事件转发给项目本地的 eslint CLI。如果 eslint.config.js 放对了位置但没反应,大概率是插件压根没找到配置。
- 必须在项目根目录存在
eslint.config.js(新版推荐)或.eslintrc.cjs;.eslintrc.js在某些 Node 版本下可能因 ESM 限制失效 -
eslint.config.js导出必须符合import('eslint').Linter.Config类型,常见错误是直接写module.exports = {...}——这会导致静默失败,VSCode 底部状态栏的 ESLint 图标不亮 - 检查 VSCode 底部状态栏:没有 ESLint 图标亮起,说明插件未激活;点开它能看到当前生效的配置路径和解析状态
- 若项目用了 pnpm,确保
node_modules/.pnpm下有eslint包,且 VSCode 启动时工作区路径确实是项目根目录(不是父文件夹)
“保存即修复”不工作?别被 settings.json 的层级骗了
VSCode 的设置有三层优先级:用户级 < 工作区级 < 项目内 .vscode/settings.json。低优先级配置会被高优先级覆盖,而很多人只改了用户设置,却忘了项目里有个同名项把它顶掉了。
- 必须用
"editor.codeActionsOnSave": { "source.fixAll.eslint": true },不是"source.fixAll"——后者会触发所有可用修复器(比如 Prettier),容易冲突甚至破坏代码结构 - 如果同时启用了
"editor.formatOnSave": true且 formatter 是 Prettier,建议关掉它;ESLint 的 auto-fix 足够覆盖格式类规则(如semi、quotes),混用反而导致保存后代码来回跳动 - 某些规则(如
no-console、no-alert)本身不可自动修复,它们只报错不提供source.fixAll.eslint动作,别误以为插件坏了 - 文件编码不是 UTF-8 或含 BOM 头时,
eslintCLI 可能解析失败,表现为无提示、无报错、无修复——用 VSCode 右下角编码切换器确认并转成 UTF-8 without BOM
Error Lens 显示空白?它不分析,只“贴标签”
Error Lens 不是语言服务器,也不运行任何 lint 工具。它只是把 ESLint、Pylance、Clang-Tidy 等已产生的诊断信息,从底部 Problems 面板或侧边图标,“搬运”到代码行尾或行内显示。它挂了,问题一定出在上游分析器身上。
- 先确认 ESLint 图标是否在状态栏亮起;不亮,Error Lens 再怎么配也显示不了东西
- 检查
errorLens.messageMode设置,值为inline时要求语言服务器返回带 range 的诊断;部分旧版 ESLint 配置可能只返回 line/column,此时要设为lineEnd - 若用 TypeScript,确保
python.analysis.typeCheckingMode或typescript.preferences.includePackageJsonAutoImports这类语言专属设置没干扰到诊断生成 - 禁用
errorLens.ignoreRules临时排查——有时某条规则被意外过滤,整块提示就消失了
C/C++ 项目里 Clang-Tidy 报 “Unable to activate analyzer”?PATH 和编译数据库才是关键
vscode-cpptools 的静态分析依赖外部工具链,报这个错几乎 100% 是路径或上下文缺失。它不像 ESLint 那样靠 npm 包自动发现,必须显式告诉它 Clang-Tidy 在哪、头文件在哪、宏怎么展开。
- 确保
clang-tidy命令在终端中可执行(which clang-tidy或where clang-tidy);Windows 用户常漏掉安装时勾选 “Add to PATH” - 必须有
compile_commands.json文件,否则 Clang-Tidy 不知道如何解析 include 路径和宏定义;用 CMake 生成时加-DCMAKE_EXPORT_COMPILE_COMMANDS=ON,或用bear --make拦截编译命令生成 - 在
c_cpp_properties.json中确认"configurationProvider"指向正确的 IntelliSense 引擎(如ms-vscode.cpptools),且"compilerPath"指向真实 GCC/Clang 可执行文件 - Clang-Tidy 规则需在
c_cpp_properties.json的"clangTidy.enabled"设为true,并用"clangTidy.args"显式传参,例如["-checks=-*,cppcoreguidelines-*"]











