Vscode如何配置代码检查【教程】

6次阅读

VS Code代码检查不生效主因是LSP未正确安装或启动、eslint配置缺失、python路径解析错误及保存修复配置不当;需按语言装官方扩展、重启编辑器、在项目根配.eslintrc.*、明确ruff/pylint源码路径,并配置codeActionsOnSave而非仅formatOnSave。

Vscode如何配置代码检查【教程】

VS Code 里代码检查不生效?先确认你装的是哪个 LSP

VS Code 本身不自带代码检查,靠的是语言服务器(LSP)——比如 pylspeslinttsserverrust-analyzer。装错或没启动对应服务,Ctrl+Shift+PDeveloper: Toggle Developer Tools 里常能看到报错:Cannot find module 'eslint'Language client is not ready yet

实操建议:

  • 打开命令面板(Ctrl+Shift+P),输入 Extensions: Install Extensions,按语言搜官方推荐扩展:Python 用 ms-python.pythonjs/TS 用 dbaeumer.vscode-eslint(需额外装 eslint 包),Rust 用 matklad.rust-analyzer
  • 扩展安装后,**重启 VS Code** —— 很多 LSP 不会热加载,尤其改了 settings.json
  • 打开一个真实文件(如 index.js),别在未保存的 Untitled-1 里测试,LSP 常因无文件路径拒绝启动

eslint 配置没反应?检查工作区根目录有没有 .eslintrc.* 文件

eslint 默认只在项目根目录下找配置文件,找不到就静默降级为无规则检查。你改了 settings.json 里的 eslint.enableeslint.packageManager,但没配规则文件,编辑器照样不标红。

实操建议:

  • 在项目根目录运行 npx eslint --init 生成 .eslintrc.cjs(推荐,兼容性好),别手动建空文件
  • 确保 eslint 是本地安装:npm install eslint --save-dev;全局安装(npm install -g eslint)在多项目时易冲突,VS Code 默认优先找本地
  • 如果用了 pnpmyarn pnp,在 settings.json 加上:"eslint.packageManager": "pnpm",否则找不到依赖

Python 代码检查总报错 import 不存在?pylint 和 ruff 的路径逻辑不一样

pylint 默认把当前打开文件所在目录当 sys.path 起点,而 ruff(通过 ms-python.python 集成)依赖 pyproject.toml 里的 [tool.ruff] src 设置。同一项目,一个提示 import-Error,另一个完全不报,大概率是路径解析不一致。

实操建议:

  • ruff:在 pyproject.toml 里明确写 src = ["src", "."],让其扫描源码根目录
  • pylint:在项目根加 .pylintrc,设置 init-hook='import sys; sys.path.append("./src")'(替换 ./src 为你实际源码路径)
  • VS Code 的 Python 扩展默认启用 pylsp,它会读 pyproject.tomlsetup.py 推断源码位置——如果没这些文件,手动在 settings.json 加:"python.defaultInterpreterPath": "./venv/bin/python" 并确保虚拟环境已激活且含所需包

保存时自动修复失败?别只开 formatOnSave

"editor.formatOnSave": true 只调用格式化器(如 prettier),不是代码检查器。想保存时自动修 eslint 报的 semiquotes 类问题,得单独配 eslint.codeActionOnSave

实操建议:

  • 在工作区 .vscode/settings.json 中加:
{   "editor.codeActionsOnSave": {     "source.fixAll.eslint": true   },   "eslint.validate": ["javascript", "typescript", "vue"] }
  • 注意:source.fixAll.eslint 仅修 eslint 标记为 “fixable” 的规则(查规则文档看是否带 ✅);像 no-console 这类语义错误不会自动删 console.log
  • 如果用了 Prettier + ESLint 组合,确保装了 eslint-config-prettier 并禁用冲突规则,否则 fixAll 可能反复修改又报错

路径、LSP 状态、配置作用域(用户/工作区/文件夹)这三处出问题的概率加起来占八成。别急着调 settings.json 里的各种 flag,先打开命令面板运行 ESLint: Show Output channelPython: Show Language Server Output,日志里那几行红色文字,通常就是卡点。

text=ZqhQzanResources