Write a Blog >>
ESEC/FSE 2022
Mon 14 - Fri 18 November 2022 Singapore
Wed 16 Nov 2022 11:30 - 11:45 at SRC GLR - JF Software Evolution Chair(s): Danny Dig

Event-driven programming is widely practiced in the JavaScript community, both on the client side to handle UI events and AJAX requests, and on the server side to accommodate long-running operations such as file or network I/O. Many popular event-based APIs allow event names to be specified as free-form strings without any validation, potentially leading to lost events for which no listener has been registered and dead listeners for events that are never emitted. In previous work, Madsen et al. presented a precise static analysis for detecting such problems, but their analysis does not scale because it may require a number of contexts that is exponential in the size of the program. Concentrating on the problem of detecting dead listeners, we present an approach to learn how to use event-based APIs by first mining a large corpus of JavaScript code using a simple static analysis to identify code snippets that register an event listener, and then applying statistical modeling to identify anomalous patterns, which often indicate incorrect API usage. From a large-scale evaluation on 127,531 open-source JavaScript code bases, our technique was able to detect 75 anomalous listener-registration patterns, while maintaining a precision of 90.9% and recall of 7.5% over our validation set, demonstrating that a learning-based approach to detecting event-handling bug patterns is feasible. In an additional experiment, we investigated instances of these patterns in 25 open-source projects, and reported 30 issues to the project maintainers, of which 7 have been confirmed as bugs.

Wed 16 Nov

Displayed time zone: Beijing, Chongqing, Hong Kong, Urumqi change

11:00 - 12:30
JF Software EvolutionJournal First at SRC GLR
Chair(s): Danny Dig University of Colorado Boulder, USA
11:00
15m
Talk
Clones in Deep Learning Code: What, Where, and Why?
Journal First
Hadhemi Jebnoun Ecole Polytechnique de Montréal, Md Saidur Rahman SWAT Lab, Polytechnique Montreal, Foutse Khomh Polytechnique Montréal, Biruk Asmare Muse Ecole Polytechnique de Montréal
11:15
15m
Talk
Aide-mémoire: Improving a Project’s Collective Memory via Pull Request–Issue Links
Journal First
Profir-Petru Pârțachi National Institute of Informatics, Japan, David White , Earl T. Barr University College London
DOI Pre-print
11:30
15m
Talk
Learning How to Listen: Automatically Finding Bug Patterns in Event-Driven JavaScript APIs
Journal First
Ellen Arteca Northeastern University, Max Schaefer GitHub, Inc., Frank Tip Northeastern University
Link to publication DOI Pre-print Media Attached
11:45
15m
Talk
Coverage-Based Debloating for Java Bytecode
Journal First
César Soto-Valero KTH, Thomas Durieux KTH, Nicolas Harrand KTH Royal Institute of Technology, Benoit Baudry KTH
Link to publication DOI Pre-print Media Attached
12:00
15m
Talk
Characterizing and Mitigating Self-Admitted Technical Debt in Build Systems
Journal First
Tao Xiao Nara Institute of Science and Technology, Dong Wang Kyushu University, Japan, Shane McIntosh University of Waterloo, Hideaki Hata Shinshu University, Raula Gaikovina Kula Nara Institute of Science and Technology, Takashi Ishio Nara Institute of Science and Technology, Kenichi Matsumoto Nara Institute of Science and Technology
Link to publication DOI Pre-print Media Attached
12:15
15m
Talk
An empirical study of type-related defects in Python projects
Journal First
Faizan Khan McGill University, Boqi Chen McGill University, Daniel Varro McGill University / Budapest University of Technology and Economics, Shane McIntosh University of Waterloo