School of Computing

JAnalyzer, a visual static analyzer for Java

Eric Bodden

Technical Report 14-03, University of Kent, Computing Laboratory, July 2003 Submitted to the SET Awards, 2003.


Object-oriented (OO) programming has well-known benefits, producing reusable, modular, well-structured code. Nevertheless, program development is still hard, especially for large programs that consist of thousands of interacting objects. Faults in one method can propagate to others defined in different classes or even different packages.

The programmer would benefit from a high-level, intuitive, graphical view of these method dependencies. Such a view would aid refactoring by revealing the degree of coupling between different parts of the program as well as save debugging time by allowing design faults to be visualized at implementation time in a straightforward way. Our research concentrated on Java due to its increasing popularity and platform independence.

In contrast to classic imperative programming paradigms, the development of such a view is a non-trivial task for OO languages, because methods are typically invoked through dynamic dispatch . the type of the object on which the method will actually be invoked is not known at compile time. Such polymorphism has the benefit to the programmer of reusable code, but means that the relationship between caller and callee is 1:many rather than 1:1. A type analysis for Java is therefore required to synthesise a set of possible types for each object identifier in the program. Inferring these sets is a complex task, which we explain further below. Our research concentrated on Java due to its platform independence and increasing popularity.

Our standalone tool, JAnalyzer, aids program development by:

  • construction of call-graphs by state of the art analyses
  • visual representation of inter-dependencies between methods, thus aiding refactoring
  • comprehensible and responsive views of even very large call-graphs
Download publication 389 kbytes (PDF)

Bibtex Record

author = {Eric Bodden},
title = {{JA}nalyzer, A Visual Static Analyzer for {J}ava},
month = {July},
year = {2003},
pages = {182-196},
keywords = {determinacy analysis, Craig interpolants},
note = {Submitted to the SET Awards, 2003.},
doi = {},
url = {},
    publication_type = {techreport},
    submission_id = {26319_1085672780},
    number = {14--03},
    institution = {University of Kent, Computing Laboratory},

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 21/03/2014