Solving inter-procedural data-flow problems with Heros

Eric | November 29, 2012

I am happy to announce the availability of Heros, our new inter-procedural data-flow solver. Heros is based on the well-known IFDS and IDE frameworks by Reps, Horwitz and Sagiv. It allows users to define data-flow problems in a very simple template-based manner (see here for example): simply define your flow functions and let the solver take care of the rest. Other implementations of IFDS and IDE exist, for instance WALA has had support for IFDS for quite some time. Heros has a number of unique features, though:

  • Its implementation is independent of the programming language being analyzed and the analysis framework’s IR. We provide a connector to Soot but other people can easily integrate Heros with other tools. We ourselves are working on an integration with a C/C++ compiler.
  • Heros is multi-threaded and hence highly scalable.
  • Heros also provides a relatively simple programming interface.

By making Heros publicly available as Open Source we hope that the community will make use of it, build on it and extend it – for the benefit of all. We programmed Heros with providing clear and simple code in mind, and commented the API thoroughly. In case of any questions, do not hesitate to contacting me!

P.S. For a bit of a writeup, see here.