Experimental implementation of k-CFA and Pushdown k-CFA with optional Abstract Garbage Collection for LambdaJS and a subset of Scheme programming language
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Project structure:

benchmarks -- a set of Scheme programs to test the analysis runner

lib -- necessary libraries: Scala SDK, compiler and ScalaTest

src -- source files

test -- Test suites, run by ScalaTest utility via ant script

build.xml -- Ant script


As of November 2015, this project has moved to the BSD licence.


Use following commands to compile and test the project via Ant (in the project root directory):

ant all           -- compiles the project from scratch, builds the JAR file and zipped sources

ant zip.project   -- Packs all source files into the ZIP archive artifacts/reachability.zip

ant compile       -- compile the project (incrementally)

ant run.tests     -- Run ScalaTest suite

ant jar           -- build an executable jar (Scala SDK included) and puts it into ./artifacts/

ant jar.no.scala  -- build an executable jar (without Scala SDK) and puts it into ./artifacts/

You can also compile it via IntelliJ IDEA 15 (with the Scala 2.9 libraries from ./lib).

How to run:

-- for a compiled project
scala -cp ./out/production/reachability org.ucombinator.cfa.RunCFA [options] fileName

-- for an executable jar with Scala SDK included
java -jar artifactsGenericCFA.jar org.ucombinator.cfa.RunCFA [options] fileName

-- for an executable jar with NO Scala SDK included
scala -cp artifacts/GenericCFANoScala.jar org.ucombinator.cfa.RunCFA [options] fileName


Implementation insights:

Grep for the tag (REMARK) in the code for some non-obvious insights.