vscode静态检查起效的关键是语言服务器和linter被真正调用:需正确配置python.languageserver为pylance、c/c++项目设置compilerpath,确保eslint/pylint/cppcheck等cli工具本地安装且路径准确,并将配置文件(如.eslintrc.cjs、.pylintrc)严格置于项目根目录。

VSCode 里静态检查能起效,关键不是装了多少插件,而是语言服务器和 Linter 是否真正被调用——很多用户看到“错误提示没出来”,第一反应是换插件,其实八成是路径没对、配置没生效、或根本没触发检查。
确认语言服务器是否真在运行
比如 Python 项目,python.languageServer 必须设为 Pylance(不是默认的 Default 或 Jedi),否则类型检查直接不启动;C/C++ 项目则要确保 c_cpp_properties.json 里 compilerPath 指向真实编译器,否则 Clangd 连头文件都找不到,更别说报错。
- 右下角状态栏点语言标识(如 “Python” 或 “C++”),看是否显示 “Pylance active” 或 “Clangd ready”
- 打开命令面板(
Ctrl+Shift+P),搜 “Developer: Toggle Developer Tools”,在 Console 里搜 “failed” 或 “error”,常能看到Cannot find module 'eslint'这类真实失败原因 - 对 C++ 项目,
clangd不会自动读.clang-tidy,必须在settings.json显式加"clangd.arguments": ["--compile-commands-dir=build"]
插件启用但没提示?先查 lint 工具是否装对位置
VSCode 的 ESLint、Pylint、Cppcheck 插件全都是“壳”,只负责调用你本地安装的 CLI 工具。它们不自带引擎,也不会帮你装依赖。
- ESLint:必须在项目根目录有
node_modules/eslint,且npm ls eslint能输出版本号;全局安装的eslint默认被忽略 - Pylint:
python.linting.pylintPath必须指向你venv/bin/pylint或~/.local/bin/pylint,不能只写pylint - Cppcheck:Windows 下路径含空格(如
C:\Program Files\Cppcheck\cppcheck.exe)必须用双反斜杠或正斜杠,且插件设置里"cpp-check-lint.cppcheck.--executable"值必须是完整路径,不能只写cppcheck
规则太多太吵?别关插件,改配置粒度
默认开启全部规则反而会让开发者习惯性忽略警告,真正该做的是按项目阶段控制检查强度。
- Python 类型检查:把
python.analysis.typeCheckingMode设为basic,比关掉pylintUseMinimalCheckers更安全——前者只报硬性类型冲突,后者一开就塞满C0114(缺少模块 docstring)这类风格警告 - ESLint:用
/* eslint-disable-next-line no-console */临时绕过单行,比在 settings 里禁用整个no-console规则更可控 - C++ 项目:
--enable=warning,performance比--enable=all实用得多;uninitvar和memleak这类高价值规则建议保留,style类可延后处理
Error Lens 是唯一值得开的“增强提示”插件
其他所谓“高亮错误”的插件大多只是改颜色或加图标,Error Lens 真正在行内渲染诊断文本,且不干扰编辑器原生行为。它本身不提供检查能力,但能让已有 LSP/Linter 的提示从“找不着”变成“一眼看见”。
- 必须配合已启用的 Linter 使用,单独装它没任何效果
-
errorLens.messageMode推荐设为inline,而不是hover——悬停要移鼠标,打断编码流 - 如果发现某类错误(如
TS2322)总重复出现又不想改代码,用errorLens.ignoreRules屏蔽,比在代码里加// @ts-ignore更集中
最常被跳过的一步:所有静态检查工具的配置文件(.eslintrc.cjs、mypy.ini、.clang-tidy)必须放在项目根目录,且文件名大小写严格匹配——.ESLINTRC 或 eslint.config.js(flat config)在多数 VSCode 插件里仍不稳定,2026 年中仍建议优先用传统命名。











