HAKI: runtime verification tool for JavaScript MVC web applications

Bilge, İbrahim
In this thesis, we propose an efficient approach for locating inconsistencies in view-model bindings of JavaScript AngularJS web applications. JavaScript is one of the most common scripting languages used for developing web applications. It can be used to create flexible, efficient code thanks to its highly dynamic nature. In addition, many structural frameworks have been developed for building even more extensible and more dynamic web applications. One of the most popular of these frameworks is AngularJS which uses the MVC (Model-View-Controller) pattern. The dynamism of JavaScript including abstraction and layering of AngularJS can make coding very challenging by making it open for mistakes and vulnerable to inconsistencies that create unreadable, not maintainable, and particularly, unreliable code. In addition, custom web components remain a challenge for verification and consistency of the applications whereas these components are considered the biggest feature of JavaScript frameworks nowadays. Differing from the existing studies in literature, our aim in this study is to propose an effective and compact approach to locate inconsistencies in view-model bindings including type related errors and errors about custom web components. We introduce a tool called HAKI that executes runtime verification process on JavaScript - AngularJS applications and locates errors and warnings by using dynamic analysis. We evaluated our tool using two sets of experiments, one large scale real application and one smaller application with injected faults. Our tool located 55 errors in real application with 8 of them are evaluated as major errors; it also reported 35 warnings that can possibly cause errors. In addition, the runtime verification overhead is minimal.