Vize

人工智能静态分析

对AI编码工具兴起的常见反应是:也许静态分析现在不那么重要了。

如果助理能生成代码、解释错误、提出修复建议,甚至运行测试,为什么还要痴迷于linter、类型检查、编译器诊断和编辑器分析呢?

我认为情况正好相反。

人工智能时代并未减少静态分析的需求。它会增加它。而且不是普通的静态分析:确定性、快速的静态分析

人工智能强大,但具有概率性

大型语言模型非常有用,但它们仍然是概率系统。

他们预测可能的续作。它们不强制执行不变量。

这意味着人工智能在以下方面非常擅长:

  • 制图规范

  • 建议架构

  • 将意图转化为实现

  • 解释故障的可能原因

但人工智能本身并不是判断程序结构有效、类型安全或内部一致性的可靠依据。

但这些事实仍然必须来自别处。

决定论是平衡

静态分析提供了人工智能所需的平衡权重。

当编译器表示缺少绑定时,结果不应依赖于提示词表达。 当类型检查器显示螺旋桨合同被破坏时,这个结果不应因模型温度而变化。 当一个倾斜者标记为不安全v-html时,这个结果不应是尽力而为的猜测。

确定性工具给我们带来了:

  • 相同的输入产生相同的输出

  • 诊断可以通过语法和语义来解释

  • 在编辑器、配置项和自动化中,故障可重复出现

  • 信任不依赖于模型的个性

换句话说,静态分析是系统中仍然能说:“不。这不对。”

当周围系统有更多生成能力时,这一点就更重要了。

快速反馈不再是可选

速度曾经是开发者体验的奢侈品。

在人工智能时代,它变成了基础设施。

为什么?因为AI辅助开发会产生更多的反馈循环:

  • 编辑器在代码生成过程中持续请求诊断

  • 代理提出补丁,然后请求工具验证

  • CLI工作流程在每次变更集后运行检查

  • CI可能在人类看到之前评估许多机器生成的差异

如果静态分析缓慢,周围的一切都变得浪费:

  • 代理等待验证时停滞

  • 编辑者感觉噪声和延迟

  • 自动修复循环会消耗更多时间和代币

  • 开发者停止信任工具链并禁用检查

快速静态分析不仅仅是为了让人类更快乐。而是让整个人类+人工智能系统在经济上可行。

人工智能需要机器可读的护栏

这里还有一个模具设计上的问题。

一个好的静态分析仪不仅能为人类生成红色文本。它生成结构化、机器可读的约束:

  • 精确位置

  • 稳定规则标识符

  • 可操作的类别

  • 修正机会

  • 类型信息

  • 程序各部分之间的符号关系

这正是人工智能系统能擅长使用的信号类型。

当LLM能针对确定性结构而非模糊的失败报告工作时,它更有用。“此位置有vize/vue/require-v-for-key错误”比“模板似乎有问题”更适合自动修复。

所以未来不是静态分析instead of人工智能。 它是人工智能on顶级静态分析of

AI写的代码越多,我们越需要快速的拒绝

当AI编写代码时,有一个细微的变化:你需要拒绝的代码数量可能会大幅增加。

人工开发者打字速度相对较慢。模型可以在几秒钟内提出较大的差异。

这改变了验证的经济学。

如果在人类输入之前就已经产生了十个错误的想法,那么工具链也需要同样迅速地拒绝坏想法。否则你就要创建一个系统,能比你优先处理无效代码的速度更快。

这就是为什么快速负反馈如此重要。

静态分析不仅仅是为了批准优质代码。它的存在是为了早期消灭坏路径:

  • 不可能的引用

  • 无效模板构造

  • 破产的道具合同

  • 不安全模式

  • 格式与风格漂移

  • API 滥用

没有那个快速的拒绝层,AI会放大噪声。

有了它,人工智能放大了探索。

为什么这对Vue尤为重要

Vue不仅仅是TypeScript加HTML而已。

.vue文件的结构跨度为:

  • 模板语义学

  • 指令语法

  • 组件道具和发射器

  • SFC区块边界

  • 样式范围

  • 框架公约

通用的JavaScript工具并不完全理解这种形状。

这就是为什么即使你已经有像Oxlint这样的优秀JS/TS工具,或者像Vite+这样的通用工作流程工具,Vue专用的静态分析依然很重要。

例如,AI生成的Vue代码很容易产生以下问题:

  • v-for中缺少key绑定

  • 不安全v-html

  • 无效模板表达式

  • 螺旋桨和发射不匹配

  • 重复属性

  • 组件误用,仅在SFC环境中合理

这些都不是极端情况。这些正是生成式工具在快速跨越框架特定边界时可能犯的错误。

静态分析是信任的界限

更深层次的原因是信任。

在人工智能辅助开发中,信心在许多方面可能变得模糊:

  • 模型听起来确定

  • 补丁看起来合理

  • 解释感觉连贯

  • 差异足够大,人类可以略过

静态分析在“合理”与“真正有效”之间划分信任界限。

这个界限不必完美才能有用。它必须是:

  • 确定性

  • 快速

  • 框架感知型

  • 代码流向的任何地方都可以获得

这意味着编辑器、CLI、CI和机器对机器的工作流程都需要访问相同的底层真相。

这是维泽案的一部分

这也是我如此关心Vize方向的原因之一。

Vice对我来说不感兴趣,仅仅因为Rust速度快。 有趣的是,统一的Vue感知工具链可以提供更强的确定性层:

  • 合辑

  • 绒毛

  • 格式化

  • 类型检查

  • 语言工具

  • 面向人工智能的集成

当这些部分共享解析器、文件模型以及对Vue语义的共同理解时,反馈会更加连贯。当AI系统同时消耗输出时,这种一致性尤为重要。

重点不是让静态分析取代人工智能。 关键是让人工智能在更坚实的基础上运行。

未来是混合的

我认为获胜的模型不是:

  • “只要相信模型”

  • 或者“忽略人工智能,保持纯传统”

未来是混合的:

  • 用于合成、探索、加速和修复的人工智能

  • 对不变量、约束、拒绝和信任的静态分析

人工智能让软件开发更具生成性。 这使得确定性验证更有价值,而非降低。

所以如果你认为人工智能正在编程中扮演越来越重要的角色,你可能也应该考虑更好的静态分析。

而且你应该希望它足够快,让大家不用犹豫就能使用。