September 7, 2016
Michael Pradel
JavaScript not only makes it easy to write concise code in short time, but also to introduce programming errors, many of which are hard to detect with traditional analyses. This talk presents two approaches to detect such errors. First, we present EventBreak, a performance-guided test generation technique to identify and analyze event handlers whose execution time gradually increases while using the application, making the application unresponsive. The key idea is to systematically search for pairs of events where triggering one event increases the execution time of the other event. Second, we present DLint, a dynamic analysis approach to check code quality rules in JavaScript. DLint consists of a generic framework and an extensible set of checkers that each address a particular rule. So far, we have formally described and implemented 28 checkers that address problems missed by state-of-the-art static approaches. Applying EventBreak and DLint to real-world web applications reveals various problems, including responsiveness and scalability problems that make applications unusable, and visible bugs on the web sites of IKEA, Hilton, eBay, and CNBC.