Value Partitioning: A Lightweight Approach to Relational Static Analysis for JavaScript

Benjamin Barslev Nielsen, Anders Møller

Research output: Contribution to book/anthology/report/proceedingArticle in proceedingsResearchpeer-review

2 Citations (Scopus)
52 Downloads (Pure)

Abstract

In static analysis of modern JavaScript libraries, relational analysis at key locations is critical to provide sound and useful results. Prior work addresses this challenge by the use of various forms of trace partitioning and syntactic patterns, which is fragile and does not scale well, or by incorporating complex backwards analysis. In this paper, we propose a new lightweight variant of trace partitioning named value partitioning that refines individual abstract values instead of entire abstract states. We describe how this approach can effectively capture important relational properties involving dynamic property accesses, functions with free variables, and predicate functions. Furthermore, we extend an existing JavaScript analyzer with value partitioning and demonstrate experimentally that it is a simple, precise, and efficient alternative to the existing approaches for analyzing widely used JavaScript libraries.

Original languageEnglish
Title of host publication34th European Conference on Object-Oriented Programming, ECOOP 2020
Number of pages28
PublisherDagstuhl Publishing
Publication dateNov 2020
Article number16
ISBN (Electronic)9783959771542
DOIs
Publication statusPublished - Nov 2020
Event34th European Conference on Object-Oriented Programming (ECOOP 2020) - Online
Duration: 15 Nov 202017 Nov 2020
Conference number: 34

Conference

Conference34th European Conference on Object-Oriented Programming (ECOOP 2020)
Number34
CityOnline
Period15/11/202017/11/2020
SeriesLeibniz International Proceedings in Informatics
ISSN1868-8969

Keywords

  • Abstract interpretation
  • Dataflow analysis
  • JavaScript

Fingerprint

Dive into the research topics of 'Value Partitioning: A Lightweight Approach to Relational Static Analysis for JavaScript'. Together they form a unique fingerprint.

Cite this