Determinacy in static analysis for jQuery

Determinacy in static analysis for jQuery
复制标题

jQuery 静态分析的确定性

DOI:
--
复制
发表时间:
2014
期刊:
Conference on Object-Oriented Programming Systems, Languages, and Applications
影响因子:
--
通讯作者:
Anders Møller
Anders Møller
中科院分区:
--
文献类型:
--
作者:
Esben Andreasen;Anders Møller

文献摘要

被引文献

相似文献

JavaScript的静态分析可以帮助程序员在开发期间早期发现错误。尽管在分析技术方面取得了很多进展,但主要障碍是图书馆的普遍性,尤其是jQuery,它们应用了对分析精度和性能有害后果的编程模式。先前关于动态确定性分析的工作已经证明了有关在某些呼叫上下文中始终解决固定值的程序表达式的信息如何导致对此类代码的静态分析的显着可伸缩性提高。我们为JavaScript提供了一个静态数据流分析,该分析会在正式中侵入和利用确定性信息,以启用JQuery最复杂部分的分析。该分析结合了选择性上下文和路径敏感性,恒定的传播和分支修剪,基于对使用更基本分析的分析不精确的系统研究。这些技术是在TAJS分析工具中实现的,并根据使用JQuery的小程序进行了评估。我们的结果表明,提出的分析技术既提高了精度和性能,又是用于推断类型信息和呼叫图。
Static analysis for JavaScript can potentially help programmers find errors early during development. Although much progress has been made on analysis techniques, a major obstacle is the prevalence of libraries, in particular jQuery, which apply programming patterns that have detrimental consequences on the analysis precision and performance. Previous work on dynamic determinacy analysis has demonstrated how information about program expressions that always resolve to a fixed value in some call context may lead to significant scalability improvements of static analysis for such code. We present a static dataflow analysis for JavaScript that infers and exploits determinacy information on-the-fly, to enable analysis of some of the most complex parts of jQuery. The analysis combines selective context and path sensitivity, constant propagation, and branch pruning, based on a systematic investigation of the main causes of analysis imprecision when using a more basic analysis. The techniques are implemented in the TAJS analysis tool and evaluated on a collection of small programs that use jQuery. Our results show that the proposed analysis techniques boost both precision and performance, specifically for inferring type information and call graphs.