Practical Static Analysis of JavaScript Applications in the Presence of Frameworks and Libraries

Saved in:
Bibliographic Details
Title: Practical Static Analysis of JavaScript Applications in the Presence of Frameworks and Libraries
Authors: Magnus Madsen, Benjamin Livshits, Michael Fanning
Contributors: The Pennsylvania State University CiteSeerX Archives
Source: http://research.microsoft.com/en-us/um/people/livshits/papers/pdf/fse13.pdf.
Publication Year: 2013
Collection: CiteSeerX
Subject Terms: Algorithms, Languages Keywords points-to analysis, use analysis, JavaScript, libraries
Description: JavaScript is a language that is widely-used for both webbased and standalone applications such as those in the Windows 8 operating system. Analysis of JavaScript has long been known to be challenging due to the language’s dynamic nature. On top of that, most JavaScript applications rely on large and complex libraries and frameworks, often written in a combination of JavaScript and native code such as C and C++. Stubs have been commonly employed as a partial specification mechanism to address the library problem; alas, they are tedious and error-prone. However, the manner in which library code is used within applications often sheds light on what library APIs return or pass into callbacks declared within the application. In this paper, we propose a technique which combines pointer analysis with a novel use analysis to handle many challenges posed by large JavaScript libraries. Our techniques have been implemented and empirically validated on a set of 25 Windows 8 JavaScript applications, averaging 1,587 lines of code, together with about 30,000 lines of library code, demonstrating a combination of scalability and precision.
Document Type: text
File Description: application/pdf
Language: English
Relation: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.310.1005
Availability: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.310.1005
http://research.microsoft.com/en-us/um/people/livshits/papers/pdf/fse13.pdf
Rights: Metadata may be used without restrictions as long as the oai identifier remains attached to it.
Accession Number: edsbas.4F6A775B
Database: BASE
Description
Abstract:JavaScript is a language that is widely-used for both webbased and standalone applications such as those in the Windows 8 operating system. Analysis of JavaScript has long been known to be challenging due to the language’s dynamic nature. On top of that, most JavaScript applications rely on large and complex libraries and frameworks, often written in a combination of JavaScript and native code such as C and C++. Stubs have been commonly employed as a partial specification mechanism to address the library problem; alas, they are tedious and error-prone. However, the manner in which library code is used within applications often sheds light on what library APIs return or pass into callbacks declared within the application. In this paper, we propose a technique which combines pointer analysis with a novel use analysis to handle many challenges posed by large JavaScript libraries. Our techniques have been implemented and empirically validated on a set of 25 Windows 8 JavaScript applications, averaging 1,587 lines of code, together with about 30,000 lines of library code, demonstrating a combination of scalability and precision.