2017
DOI: 10.1002/smr.1889
|View full text |Cite
|
Sign up to set email alerts
|

Purity analysis for JavaScript through abstract interpretation

Abstract: We present a static analysis for determining whether and to what extent functions in JavaScript programs are pure. To this end, the analysis classifies functions as pure functions, observers, or procedures. A function is pure if none of its executions generate or depend upon externally observable side effects. A function is an observer as soon as one of its executions depends on an external side effect, but none of its executions generate observable side effects. Otherwise, the function is classified as a proc… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2019
2019
2021
2021

Publication Types

Select...
2
1
1

Relationship

2
2

Authors

Journals

citations
Cited by 4 publications
(4 citation statements)
references
References 42 publications
0
4
0
Order By: Relevance
“…Setup We use JIPDA [34] as a configurable abstract interpreter to perform static analysis of JavaScript programs and abstractly execute policy code. We employed JIPDA because it is possible to steer the abstract interpreter for implementing our 2-phase approach, and it implements a version of the syntax and semantics presented in section 4.…”
Section: Discussionmentioning
confidence: 99%
See 2 more Smart Citations
“…Setup We use JIPDA [34] as a configurable abstract interpreter to perform static analysis of JavaScript programs and abstractly execute policy code. We employed JIPDA because it is possible to steer the abstract interpreter for implementing our 2-phase approach, and it implements a version of the syntax and semantics presented in section 4.…”
Section: Discussionmentioning
confidence: 99%
“…That work presented js 0 , a core functional language that models a subset of JavaScript, and a static analysis that models the execution of js 0 programs as a flow graph from which information about control and value flow, and effects can be extracted. In this section, we present the syntax and semantics of js 0 based on its original specification in [34]. We focus on the relevant features to understand the contributions of this work and include the details on the components and operations of the abstract machine in appendix D.…”
Section: Phase 1: Static Analysis Of Base Programsmentioning
confidence: 99%
See 1 more Smart Citation
“…Modf itself also uses AAM-style semantics for its small-step analysis of functions, which makes the comparison with the AAM analyzer justified and straightforward, the latter also on a technical level by maximizing code reuse. Applications of AAM are found in various domains, such as detecting function purity [18], performing symbolic execution for contracts [15], analyzing concurrent programs [14,23,24], determining function coupling [16], discovering security vulnerabilities [17] or performing malware analysis [11]. The approach used by Modf could improve the performance of such applications and other client analyses without impacting their precision.…”
Section: Related Workmentioning
confidence: 99%