Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

ajFX logo

ajFX provides a frame inference analysis for Java and AspectJ applications. It is a static, compositional source code analysis that is able to infer which locations may/must be modified by a given method or advice body (and whatever code is reachable from that body). These locations are described such that they can be understood in terms of the body's pre-state, i.e. in terms of (fields of) formal parameters or the this object.

Getting started

To get started, you will need the following:

  • Eclipse (tested using Eclipse Kepler and Luna)
  • Ekeko, a meta-programming library to query/analyse/transform Java code
  • For AspectJ support (optional): AJDT (tested on version 2.2.3) and Ekeko's AspectJ extension

Once this is done:

  • Clone/download the ajfx project from GitHub
  • Import the project in Eclipse
  • Run it as an 'Eclipse application' to start a new instance of Eclipse
  • In this new instance, open a Java/AspectJ project that you'd like to analyse
  • Right-click the project > Configure > Include in Ekeko queries
  • Right-click the project again > Configure > Ekeko Properties and fill in -no-bodies-for-excluded -src-prec c -f jimple -keep-line-number -app -w -p jb use-original-names:true -p cg.cha in the "Soot arguments:" text box
  • Right-click the project again > Configure > Enable Ekeko Soot Analyses (Depending on the size of the project, this might take a few seconds up to a few minutes; the Soot framework is currently converting the project to Jimple code, which is the intermediate representation that ajFX uses..)
  • Ekeko > start nREPL (This should open up a Clojure REPL in the original Eclipse instance.)
  • In the original Eclipse instance, open up the ekeko_ajfx/core.clj file
  • Clojure > Load file in REPL (This should take less than a minute..)
  • Clojure > Switch REPL to File's Namespace
  • ajFX is now at your disposal (and Ekeko and Soot are too)! Try running (inspect (analyse-all-bodies)) to analyse all method/advice bodies, and open an Inspector window to browse the results.


Frame inference analysis for Java/AspectJ






No packages published