problems面板为空是因为诊断源未启动:右下角语言模式若为plain text则无检查器工作;js/ts缺tsconfig.json、python缺pylance、eslint配置文件不在根目录、shellcheck未指定shell类型或路径错误,均导致诊断信息无法生成。

VS Code 本身不检查语法错误,所有报错都依赖插件或语言服务器提供诊断信息;没装对插件、没配对路径、文件没识别成正确语言模式,就根本不会出现波浪线或 Problems 面板条目。
为什么 Problems 面板空着但代码明显有错
常见原因不是配置漏了,而是诊断源压根没启动:
- 右下角状态栏显示
Plain Text→ 点击它,手动选JavaScript、TypeScript、Python或Shell Script,否则任何检查器都不工作 - JS/TS 项目缺少
tsconfig.json或jsconfig.json→ TypeScript Server 不启用类型检查,const a = 1; a = 2;这类重赋值也不会报错 - Python 文件没装
Pylance或pylint扩展 →undefined variable类提示不会进面板 - ESLint 配置文件(如
.eslintrc.cjs)不在工作区根目录 → 插件读不到规则,no-unused-vars这类警告直接消失
ShellCheck 报一堆“变量未定义”怎么办
这是 ShellCheck 默认按 POSIX sh 解析,但你的脚本实际是 Bash 写的——类型错位导致误报泛滥。
- 在 VS Code 设置中加
"shellcheck.shell": "bash",强制指定解析器 - 若仍报
SC2086(未引号包裹变量)这类风格建议,可加"shellcheck.additionalArgs": ["-e", "SC2086"]屏蔽,但别关SC2162(read缺-r),那是真会出安全问题的 - 确认
shellcheck.executablePath填的是完整路径(如/opt/homebrew/bin/shellcheck),不是只写shellcheck—— WSL、Conda、nvm 环境下后者必失效
Grammarly 检查 Markdown 文档却没反应
Grammarly 不靠后缀自动触发,必须显式包含路径,且默认不检查 .md 全局文件。
- 修改
settings.json,把"grammarly.files.include"改成:["**/README.md", "**/*.md", "**/*.txt"] - 排除干扰项:如果项目里有大量 API 文档片段(如
docs/api/*.md),可加"grammarly.files.exclude": ["**/node_modules/**", "**/dist/**"] - 注意文档类型设置:
"grammarly.documentDomain"设为"technical"或"general",避免学术写作规则误判技术术语为冗余表达
F8 跳不到黄色波浪线对应的警告
F8 只跳 Problems 面板里已缓存的诊断项,不是编辑器里所有波浪线——很多“看起来像警告”的提示根本没上报到面板。
- 打开 Problems 面板(
Ctrl+Shift+M),右上角筛选器勾选Warning,再输入当前文件名过滤 - 确保
"eslint.enable": true(ESLint)、"typescript.preferences.includePackageJsonAutoImports": "auto"(TS)等开关开着,旧版配置如"eslint.validate"已被弃用,写了反而阻断警告上报 - 刚改完代码没保存?大多数 Linter 默认只校验已保存文件,按
Ctrl+S强制触发一次
最常被跳过的动作,是盯着右下角语言模式和状态栏里的语言服务器启动提示——比反复按 F8 更快定位问题根源。











