Skip to content
Go to file

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
You can’t perform that action at this time.