eslint无法标出if (user.role === 'admin') { api.deleteall() }这类问题,因其仅检查语法和静态类型流,不分析运行时数据流与业务约束,如role是否为空、deleteall是否该在else分支执行。

VSCode 本身不分析 JavaScript 逻辑缺陷,所谓“精准定位”必须靠插件组合 + 正确配置 + 明确规则输入——缺一不可。光装插件没用,错配一个 setting 就全失效。
为什么 ESLint 标不出 if (user.role === 'admin') { api.deleteAll() } 这类问题
ESLint 只检查语法和静态可推断的类型流,它不知道 user.role 是从后端返回的、可能为空字符串或被篡改。这类越权、空值滥用、状态跳变漏洞,属于数据流+业务约束问题,ESLint 默认完全静默。
-
no-div-0只捕获5 / 0这种字面量除零,对arr.length && total / arr.length不报错 -
no-unused-vars能发现未使用的temp变量,但不会警告你user.email没校验就传给了支付接口 - 真正要查逻辑缺陷,得用像
Fitten Code这类基于语义建模的检测器,但它不是开箱即用的 Linter
Fitten Code 扫描前必须确认的三件事
它依赖运行时建模和规则注入,配置错一点就漏报。不是装完点一下就出结果。
- VS Code 版本 ≥
v2.8.0,旧版缺失逻辑漏洞语义分析模块 - Settings 搜索
logic,勾选Enable advanced logic vulnerability detection—— 必须重启 VS Code,仅重载窗口无效 - 右键菜单出现
Fitten Code – Find Logic Bugs后,扫描目标必须是完整函数或类定义,不能只选几行代码;否则无法构建跨状态操作序列(如注册→登录→下单)
Error Lens 怎么配合 ESLint 看清真实错误位置
Error Lens 不解决“该不该报”,而是解决“报在哪、能不能一眼看懂”。它把 ESLint / TypeScript Server 的诊断信息内联到代码行末,避免来回切面板。
- 安装后默认启用,但若
const x = 1; x = 2;没标红,先检查右下角语言模式是不是JavaScript React,不是纯JavaScript - 在 Settings 搜
errorLens.messageMode,设为inline可让错误贴着代码显示;设为hover则需悬停才看全 - 若看到
TS2322这类错误码但没修复建议,说明对应语言服务器(如 TypeScript Server)没加载成功,运行Developer: Show Running Extensions查状态
最难的不是找工具,而是把模糊的业务规则变成机器能读的约束——比如“邮箱验证通过后才能调用 /v1/payment/confirm”,这句话得明确告诉 Fitten Code,它才能生成带 if (!user.EmailVerified) 的 guard clause。漏掉这步,所有扫描都是在猜。











