This tutorial will cover the usage of Doop, an open source (publicly available at https://bitbucket.org/yanniss/doop [bitbucket.org]) framework for (static) points-to analysis of Java programs. Doop builds on the idea of specifying pointer analysis algorithms declaratively, using Datalog, a logic based language for defining (recursive) relations. Doop makes it possible to describe a full end-to-end analysis in Datalog. Special care has be taken so as to aggressively optimize our highly recursive Datalog rules. As a result, Doop is scalable to large Java programs without sacrificing expressiveness or coverage of language features. This approach allows us to specify a variety of context-sensitive analyses just by redefining a few key rules. The majority of the core logic rules stays unaltered.
In this tutorial you will:
- become familiar with the Datalog dialect that we use in the Doop framework
- see parts of the core logic as well as how easily one can define a new analysis
- run a few analyses in real-time on some of our benchmark programs and witness the whole work-flow of using Doop
- try it for yourself, should you desire to do so – trying out Doop on your personal computer will require you to acquire an academic license for the LogicBlox engine that Doop uses under the hood (the process is fast and this can be done during the tutorial).
Sun 14 Jun
|14:00 - 15:30|
|Link to publication|