Context sensitivity is a technique to improve program analysis precision by distinguishing between function calls. A specific context-sensitive analysis is usually designed to accommodate the programming paradigm of a particular programming language. JavaScript features both the object-oriented and functional programming paradigms. Our empirical study suggests that there is no single context-sensitive analysis that always produces precise results for JavaScript applications. This observation motivated us to design an adaptive analysis, selecting a context-sensitive analysis from multiple choices for each function. Our two-staged adaptive context-sensitive analysis first extracts function characteristics from an inexpensive points-to analysis and then chooses a specialized context-sensitive analysis per function based on the heuristics. The experimental results show that our adaptive analysis achieved more precise results than any single context-sensitive analysis for several JavaScript programs in the benchmarks.
@InProceedings{wei_et_al:LIPIcs.ECOOP.2015.712, author = {Wei, Shiyi and Ryder, Barbara G.}, title = {{Adaptive Context-sensitive Analysis for JavaScript}}, booktitle = {29th European Conference on Object-Oriented Programming (ECOOP 2015)}, pages = {712--734}, series = {Leibniz International Proceedings in Informatics (LIPIcs)}, ISBN = {978-3-939897-86-6}, ISSN = {1868-8969}, year = {2015}, volume = {37}, editor = {Boyland, John Tang}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.712}, URN = {urn:nbn:de:0030-drops-52446}, doi = {10.4230/LIPIcs.ECOOP.2015.712}, annote = {Keywords: Context Sensitivity, JavaScript, Static Program Analysis} }
Feedback for Dagstuhl Publishing