Determinacy in Static Analysis for jQuery

被引:0
|
作者
Andreasen, Esben [1 ]
Moller, Anders [1 ]
机构
[1] Aarhus Univ, DK-8000 Aarhus C, Denmark
关键词
Languages; Algorithms; Verification; !text type='Java']Java[!/text]Script; program analysis;
D O I
10.1145/2714064.2660214
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:17 / 31
页数:15
相关论文
共 50 条
  • [31] An algorithm for the analysis of static hanging drape
    Indrie, Liliana
    Zlatev, Zlatin
    Ilieva, Julieta
    Oana, Ioan Pavel
    INDUSTRIA TEXTILA, 2023, 74 (02): : 154 - 162
  • [32] Static Analysis in the Continuously Changing World
    Sankaranarayanan, Sriram
    STATIC ANALYSIS, SAS 2013, 2013, 7935 : 4 - 5
  • [33] Static Analysis of Infrastructure as Code: a Survey
    Chiari, Michele
    De Pascalis, Michele
    Pradella, Matteo
    2022 IEEE 19TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE COMPANION (ICSA-C 2022), 2022, : 218 - 225
  • [34] Write barrier removal by static analysis
    Zee, K
    Rinard, M
    ACM SIGPLAN NOTICES, 2002, 37 (04) : 32 - 41
  • [35] High Performance Static Analysis for Industry
    Bradley, Mark
    Cassez, Franck
    Fehnker, Ansgar
    Given-Wilson, Thomas
    Huuck, Ralf
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2012, 289 : 3 - 14
  • [36] Static Analysis of Featured Transition Systems
    ter Beek, Maurice H.
    Damiani, Ferruccio
    Lienhardt, Michael
    Mazzanti, Franco
    Paolini, Luca
    SPLC'19: PROCEEDINGS OF THE 23RD INTERNATIONAL SYSTEMS AND SOFTWARE PRODUCT LINE CONFERENCE, VOL A, 2020, : 39 - 51
  • [37] Static Program Analysis as a Fuzzing Aid
    Shastry, Bhargava
    Leutner, Markus
    Fiebig, Tobias
    Thimmaraju, Kashyap
    Yamaguchi, Fabian
    Rieck, Konrad
    Schmid, Stefan
    Seifert, Jean-Pierre
    Feldmann, Anja
    RESEARCH IN ATTACKS, INTRUSIONS, AND DEFENSES (RAID 2017), 2017, 10453 : 26 - 47
  • [38] Mechanically Proving Determinacy of Hierarchical Block Diagram Translations
    Preoteasa, Viorel
    Dragomir, Iulia
    Tripakis, Stavros
    VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, VMCAI 2019, 2019, 11388 : 577 - 600
  • [39] Static Analysis of Interrupt-driven Programs Synchronized via the Priority Ceiling Protocol
    Schwarz, Martin D.
    Seidl, Helmut
    Vojdani, Vesal
    Lammich, Peter
    Mueller-Olm, Markus
    ACM SIGPLAN NOTICES, 2011, 46 (01) : 93 - 104
  • [40] Java']Java bytecode verification via static single assignment form
    Gal, Andreas
    Probst, Christian W.
    Franz, Michael
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2008, 30 (04):