Skip to content

Instantly share code, notes, and snippets.

@brianpeiris
Last active August 8, 2016 14:44
Show Gist options
  • Save brianpeiris/be629c4714451dc12769 to your computer and use it in GitHub Desktop.
Save brianpeiris/be629c4714451dc12769 to your computer and use it in GitHub Desktop.
ICSE 2015 JavaScript Research

TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript

Dynamic languages, such as JavaScript, give programmers the freedom to ignore types, and enable them to write concise code in short time. Despite this freedom, many programs follow implicit type rules, for example, that a function has a particular signature or that a property has a particular type. Violations of such implicit type rules often correlate with problems in the program. This paper presents Type Devil, a mostly dynamic analysis that warns developers about inconsistent types. The key idea is to assign a set of observed types to each variable, property, and function, to merge types based in their structure, and to warn developers about variables, properties, and functions that have inconsistent types. To deal with the pervasiveness of polymorphic behavior in real-world JavaScript programs, we present a set of techniques to remove spurious warnings and to merge related warnings. Applying Type Devil to widely used benchmark suites and real-world web applications reveals 15 problematic type inconsistencies, including correctness problems, performance problems, and dangerous coding practices.

Michael Pradel; Parker Schuh; Koushik Sen
University of California at Berkeley, USA
Preprint: http://mp.binaervarianz.de/icse2015.pdf

Detecting Inconsistencies in JavaScript MVC Applications

Higher demands for more reliable and maintainable JavaScript-based web applications have led to the recent development of MVC (Model-View-Controller) frameworks. One of the main advantages of using these frameworks is that they abstract out DOM API method calls, which are one of the leading causes of web application faults, due to their often complicated interaction patterns. However, MVC frameworks are susceptible to inconsistencies between the identifiers and types of variables and functions used throughout the application. In response to this problem, we introduce a formal consistency model for web applications made using MVC frameworks. We propose an approach – called Aurebesh – that automatically detects inconsistencies in such applications. We evaluate Aurebesh by conducting a fault injection experiment and by running it on real applications. Our results show that Aurebesh is accurate, with an overall recall of 96.1% and a precision of 100%. It is also useful in detecting bugs, allowing us to find 15 real-world bugs in applications built on Angular JS, a popular MVC framework.

Frolin Ocariza; Karthik Pattabiraman; Ali Mesbah
University of British Columbia, Canada
Preprint: http://ece.ubc.ca/~frolino/docs/mvc_inconsistency_paper.pdf

Gray Computing: An Analysis of Computing with Background JavaScript Tasks

Websites routinely distribute small amounts of work to visitors' browsers in order to validate forms, render animations, and perform other computations. This paper examines the feasibility, cost effectiveness, and approaches for increasing the workloads offloaded to web visitors' browsers in order to turn them into a large-scale distributed data processing engine, which we term gray computing. Past research has looked primarily at either non-browser based volunteer computing or browser-based volunteer computing where the visitors keep their browsers open to a single web page for a long period of time. This paper provides a deep analysis of the architectural, cost effectiveness, user experience, performance, security, and other issues of gray computing distributed data processing engines with high heterogeneity, non-uniform page view times, and high computing pool volatility.

Yao Pan; Jules White; Yu Sun; Jeff Gray
Vanderbilt University, USA; University of Alabama, USA
Preprint: http://panyao.github.io/papers/ICSE2015_graycomputing.pdf

Automatically Fixing Real-World JavaScript Performance Bugs

Marija Selakovic; Michael Pradel
TU Darmstadt, Germany
Preprint: http://marija.skyresource.com/publications_list/icse2015-poster.pdf

Dynamic Analysis Using JavaScript Proxies

Laurent Christophe; Coen De Roover; Wolfgang De Meuter
Vrije Universiteit Brussel, Belgium
Preprint and Poster: http://soft.vub.ac.be/Publications/2015/vub-soft-tr-15-04.pdf

Tierless Programming in JavaScript

Laure Philips; Coen De Roover; Wolfgang De Meuter
Vrije Universiteit Brussel, Belgium
Preprint: http://soft.vub.ac.be/Publications/2015/vub-soft-tr-15-03.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment