kirancodes.me
To Proof Maintenance & Beyond!

Mining interprocedural, data-oriented usage patterns in JavaScript web applications

Hung Viet Nguyen, Hoan Anh Nguyen, Anh Tuan Nguyen, Tien N. Nguyen

Abstract

A frequently occurring usage of program elements in a programming language and software libraries is called a usage pattern. In JavaScript (JS) Web applications, JS usage patterns in their source code have special characteristics that pose challenges in pattern mining. They involve nested data objects with no corresponding names or types. JS functions can be also used as data objects. JS usages are often cross-language, inter-procedural, and involve control and data flow dependencies among JS program entities and data objects whose data types are revealed only at run time due to dynamic typing in JS. This paper presents JSModel, a novel graph-based representation for JS usages, and JSMiner, a scalable approach to mine inter-procedural, data-oriented JS usage patterns. Our empirical evaluation on several Web programs shows that JSMiner efficiently detects more JS patterns with higher accuracy than a state-of-the-art approach. We conducted experiments to show JSModel's usefulness in two applications: detecting anti-patterns (buggy patterns) and documenting JS APIs via pattern skeletons. Our controlled experiment shows that the mined patterns are useful as JS documentation and code templates.

BibTeX
@inproceedings{Nguyen-al:ICSE14,
  author    = {Hung Viet Nguyen and
               Hoan Anh Nguyen and
               Anh Tuan Nguyen and
               Tien N. Nguyen},
  title     = {Mining interprocedural, data-oriented usage patterns in {JavaScript} web applications},
  booktitle = {ICSE},
  pages     = {791--802},
  publisher = {{ACM}},
  year      = {2014},
}

Related papers