This analysis toolkit is part of a larger research
project at the
Imdea Software Institute
into techniques for modeling and reasoning about the program in heap in order to support program development and optimization. This goal of the larger project is to create a first class set of tools for working with data structures
through the entire development lifecycle, from design to deployment, of a program. As such we are attempting to make the tool robust and easily usable by other researchers (although it is not there yet) and are happy to provide assistance as needed.
analysis toolkit is a central support component for several other tools. The analysis is a
hybrid static heap analysis
that is a combination of shape
analysis style abstract domains with
analysis style transfer functions. The result is an analysis with the following properties: (1) it can express a rich set of structural, allocation site, use/mod, and sharing properties which are not provided by a classic points-to analysis
and that are useful for optimization and error detection applications (2) it uses efficient, weakly-updating, set-based transfer functions which enable the analysis to be more robust and scalable than a shape analysis and (3) it can be used as the basis for
a scalable interprocedural analysis that produces precise results in practice.
This toolkit is currently under active development as part of the ongoing research project -- so although the code analysis code is relatively stable we expect to be making non-trivial changes to various things. We provide a basic release of the code, benchmarks,
and some sample information extraction for people to experiment with.