Diver: Precise Dynamic Impact Analysis using Dependence-based Trace Pruning

Diver, short for Dynamic impact analysis by tracking value transfers, is a tool that is designed for precisely predicting the impacts of proposed changes to Java software systems at a time and space cost that is practically acceptable. What unlies Diver is a fine-grained program dependence graph, using with the technique prunes methods that executed after the given query but have no data/control dependence on that query.

This is the project homepage for Diver, where the tool implementation and information about the usage are hosted. The Diver tool is built on top of our data-flow analysis and instrumentation library DUA-forensics, which is based on the Soot byte-code analysis and optimization framework. Both Diver and DUA-forensics, also with other third-party libraries, can be downloaded using the links provided on this page.

An implementation of the Execute-After Sequence (EAS) is also included in the Diver package. In particular, our EAS implementation corrected the one presented in the original paper by capturing method returned-into events for methods throwing exceptions that are not handled by either themselves or all of its runtime callers, and methods on the call stack when that happens, which would all be missed by the CollectEA---the original EAS implementation.

How Diver works


Source Code and Demonstration

Generated on 4 Apr 2015 by  doxygen 1.6.1