Affiliation:
1. Aarhus University, Aarhus, Denmark
Abstract
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.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Design and Implementation of an Auxiliary Software Platform for Prediction of Coal Shipping Price Index;2022 IEEE Asia-Pacific Conference on Image Processing, Electronics and Computers (IPEC);2022-04-14
2. A Tool for Syntactic Dependency Analysis on the Web Stack;Advances in Intelligent Systems and Computing;2022
3. DoubleX: Statically Detecting Vulnerable Data Flows in Browser Extensions at Scale;Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security;2021-11-12
4. Slimming javascript applications: An approach for removing unused functions from javascript libraries;Information and Software Technology;2019-03
5. Deep learning type inference;Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2018-10-26