Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

README.md

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.

About

Frame inference analysis for Java/AspectJ

Resources

Packages

No packages published
You can’t perform that action at this time.