中文

一种用于发现属性访问错误的统计方法

软件工程 2023-06-16 v1

摘要

我们研究在JavaScript中发现不正确属性访问的问题,其中对象没有固定布局,属性(包括方法)可在对象生命周期内自由添加、覆盖和删除。由于在JavaScript中引用不存在的属性并非错误,对非存在属性的意外访问(可能由拼写错误或误解API文档引起)可在无彻底测试时未被发现,并可能在远离问题源头处显现。我们基于大多数属性访问在实践中是正确的这一观察,提出一种两阶段检测属性访问错误的方法。首先从大规模真实世界JavaScript代码语料库中收集大量属性访问模式,并进行统计分析以识别异常使用模式。这些模式的具体实例未必是缺陷(例如由于动态类型检查),因此局部数据流分析过滤掉安全的异常属性访问实例,仅留下那些可能为实际缺陷的。我们通过实验验证该方法,显示在100个具体异常属性访问实例上,该方法达到82%精确率与90%召回率,适合实际使用。我们还进行了实验以确定流行的VSCode代码补全功能在建议对象属性方面的有效性,发现尽管其从未建议错误属性(精确率100%),却在80例中的62例未能建议正确属性(召回率22.5%)。这表明开发者不能仅依赖VSCode代码补全来确保所有属性访问有效。

关键词

引用

@article{arxiv.2306.08741,
  title  = {A statistical approach for finding property-access errors},
  author = {Ellen Arteca and Max Schäfer and Frank Tip},
  journal= {arXiv preprint arXiv:2306.08741},
  year   = {2023}
}

备注

11 pages, 3 figures