← 研踪 PaperTrail软件学报:jos:7572 · 记录 #1
基于语法和类型变异的TypeScript编译器缺陷检测
来源日期 2026-02-04
来源记录日期 2026-02-04
雷达观测 2026-11-01 16:34
摘要
TypeScript作为JavaScript的超集, 提供了静态类型支持和面向对象等多种特性, 被Angular、Vue、React等众多主流框架广泛采用, 成为构建大型应用的核心技术之一. 其编译器负责将TypeScript代码编译为标准的JavaScript代码. 然而, TypeScript编译器本身可能存在缺陷, 导致生成的JavaScript代码包含难以预料的错误. 尽管在JavaScript引擎测试方面已有诸多研究, 但尚未有针对TypeScript编译器的系统性测试研究. 现有的JavaScript引擎测试方法既难以生成大量包含TypeScript特定类型的程序, 也无法有效变异这些类型, 导致难以检测TypeScript编译器中与复杂类型系统相关的缺陷. 为此, 提出一种基于语法和类型变异的TypeScript编译器测试框架TscFuzz. 为了获取大量包含TypeScript特定类型的种子程序, TscFuzz针对TypeScript相较于JavaScript的特定类型设计了一组提示词, 并引导大语言模型生成一系列包含特定类型的程序. 然后, 设计了一组类型特定的变异算子, 旨在通过类型变异对TypeScript的类型系统进行针对性的测试. 最后, TscFuzz基于交叉版本策略的差分测试, 比较不同版本的TypeScript编译器的输出结果来检测其缺陷, 并通过Node.js验证编译器输出JavaScript程序的语义正确性. 实验结果显示, TscFuzz在72 h内发现了5个缺陷, 比基线方法DIE和FuzzJIT分别多检测了2个和3个bug. TscFuzz的缺陷检测效果显著优于基线方法. 同时, 经过3个月的测试, TscFuzz发现了12个真实的TypeScript缺陷, 其中8个已被开发者确认, 7个已被修复.
论文发现出处
这些页面提供论文线索,不代表同行评审或质量认证。
发表信息与关联版本
软件学报 ↗2026 · 正式发表 · DOI: 10.13328/j.cnki.jos.007572
观测到的版本
平台记录号代表本站观测到的元数据变化,不是作者修订号。来源日期仅到月份或年份时,按该月或该年首日存档。
记录 #1 · 2026-02-04 · 最新观测版本
基于语法和类型变异的TypeScript编译器缺陷检测
TypeScript作为JavaScript的超集, 提供了静态类型支持和面向对象等多种特性, 被Angular、Vue、React等众多主流框架广泛采用, 成为构建大型应用的核心技术之一. 其编译器负责将TypeScript代码编译为标准的JavaScript代码. 然而, TypeScript编译器本身可能存在缺陷, 导致生成的JavaScript代码包含难以预料的错误. 尽管在JavaScript引擎测试方面已有诸多研究, 但尚未有针对TypeScript编译器的系统性测试研究. 现有的JavaScript引擎测试方法既难以生成大量包含TypeScript特定类型的程序, 也无法有效变异这些类型, 导致难以检测TypeScript编译器中与复杂类型系统相关的缺陷. 为此, 提出一种基于语法和类型变异的TypeScript编译器测试框架TscFuzz. 为了获取大量包含TypeScript特定类型的种子程序, TscFuzz针对TypeScript相较于JavaScript的特定类型设计了一组提示词, 并引导大语言模型生成一系列包含特定类型的程序. 然后, 设计了一组类型特定的变异算子, 旨在通过类型变异对TypeScript的类型系统进行针对性的测试. 最后, TscFuzz基于交叉版本策略的差分测试, 比较不同版本的TypeScript编译器的输出结果来检测其缺陷, 并通过Node.js验证编译器输出JavaScript程序的语义正确性. 实验结果显示, TscFuzz在72 h内发现了5个缺陷, 比基线方法DIE和FuzzJIT分别多检测了2个和3个bug. TscFuzz的缺陷检测效果显著优于基线方法. 同时, 经过3个月的测试, TscFuzz发现了12个真实的TypeScript缺陷, 其中8个已被开发者确认, 7个已被修复.
查看此版本解读 →查看此版本原文 ↗