Abstract

Static analysis of object-oriented applications has become widespread
over the last decade, mainly in the context of compile-time
optimizations. The paper describes how static analysis of virtual
method calls can be employed to provide a high-level view of Java
applications. The result is a method call graph that can be built from
either source or bytecode, and a graphical browser that enables the
user to analyze control flow and the coupling between classes and
packages in an intuitive fashion, thereby supporting application design
as well as refactoring and debugging. In order to achieve the necessary
bijection between source and bytecode representations of classes, we
implement a new approach based on source code pre-processing.