VSCode本身不执行代码纠错,真正起作用的是ESLint、Pylint等外部linter工具;纠错依赖正确安装扩展、配置项目级规则文件(如.eslintrc.js、.pylintrc)、语言模式识别准确,并区分格式化与纠错功能。

VSCode 本身不执行代码纠错,真正起作用的是 ESLint(JavaScript/TypeScript)、Pylint/Flake8(Python)等外部 linter 工具;你看到的波浪线、错误提示、Quick Fix 建议,全靠它们驱动。没装对应工具、没配对规则文件、没打开对应语言服务,VSCode 就只是个高级记事本。
为什么改了 settings.json 还没纠错提示?
常见现象:加了 "eslint.enable": true,但 JS 文件里写 var a = 1; console.log(a); 依然没警告 —— 这说明 ESLint 根本没加载成功。
- 确认 VSCode 当前打开的是**项目根目录**(含
package.json和.eslintrc.js),不是子文件夹 - 检查右下角状态栏是否显示 ESLint 图标;若显示 “Disabled”,点击它 → 选 “Enable for Workspace”
-
.eslintrc.js必须导出有效配置,空对象module.exports = {}= 零规则,不会报任何错 - ESLint 插件会优先查找项目内
node_modules/.bin/eslint,没装本地eslint包(npm install eslint --save-dev)就必然失效
editor.codeActionsOnSave 自动修复到底修什么?
它只触发当前语言扩展注册的“可自动修复项”,不是所有警告都能一键修。比如 no-console 可关可删,no-unused-vars 可删变量,但 complexity 或 max-lines 这类规则无法自动修。
- JS/TS 项目推荐配:
"source.fixAll.eslint": true,配合"editor.formatOnSave": false避免和 Prettier 冲突 - Python 项目要配:
"source.fixAll.flake8": false(flake8 不支持自动修),改用"source.fixAll.pylint": true(需 pylint 支持) - 启用后保存仍无反应?打开命令面板(
Ctrl+Shift+P)→ 输入ESLint: Fix all auto-fixable Problems手动试一次,看是否报错 —— 报错往往指向解析器缺失(如没装@typescript-eslint/parser)
团队共享规则时,.editorconfig 和 .prettierrc 谁管缩进?
缩进控制权是分层的:.editorconfig 管编辑器基础行为(是否插空格、默认 tabSize),.prettierrc 管格式化输出("tabWidth": 2),而 ESLint 规则(如 indent)管语义合规性。三者不一致就会打架。
- 必须禁用 VSCode 自动检测缩进:
"editor.detectIndentation": false,否则.editorconfig的indent_size会被覆盖 - Python 项目尤其敏感:必须在
[python]语言块中设"editor.tabSize": 4,全局设置无效;且black的tab_width = 4要和它对齐 - 如果开了
editor.formatOnSave又用了 Prettier,就别在.eslintrc.js里配indent规则 ——eslint-config-prettier已把它关了,重复启用会导致保存时反复格式化又报错
最易被忽略的一点:规则文件的作用域永远从当前文件路径向上查找最近的配置,不是按 VSCode 窗口根目录算。把 .eslintrc.js 放在 src/ 下,index.js 在项目根目录就完全不受控 —— 这种路径错位导致的“局部失灵”,比语法写错更难排查。


















