Skip to content

drill89/Change-aware-Dynamic-Analysis

Repository files navigation

Change-aware-Dynamic-Analysis

A static program analysis to reduce the overhead of dynamic analyses for JavaScript.

Abstract

Dynamic analysis is a powerful technique to detect correctness, performance, and security problems, in particular for programs written in dynamic languages, such as JavaScript. To catch mistakes as early as possible, developers should run such analyses after each code change, e.g., by executing a regression test suite. Unfortunately, the high overhead of these analyses make this approach prohibitively expensive, hindering developers from benefiting from the power of heavyweight dynamic analysis. This paper presents change-aware dynamic program analysis, a generic approach to make an important class of dynamic analyses change-aware. The key idea is to identify parts of the code affected by a change through a lightweight static change impact analysis, and to focus the dynamic analysis on these affected parts. We implement the idea based on the dynamic analysis framework Jalangi and evaluate it with 46 checkers from the DLint and JITProf tools. Our results show that change-aware dynamic analysis reduces the overall analysis time by 40%, on average, and by at least 80% for 31% of all commits.

A paper describing the technique is currently under submission.

Installation and Usage

Follow these steps for installing the CADA tool:

To apply CADA to a the "backbone" library, run: node evaluation/js/runAllExperiments.js

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published