There are two publicly available implementations of our refinement-based context-sensitive points-to analysis, described in our PLDI 2006 paper.
Our points-to analysis is now available as part of WALA, the Watson Libraries for Analysis,
as of release
1.0.04. To get the analysis code, simply install WALA, as described
in the Getting
Started guide. The main analysis code is in DemandRefinementPointsTo.
Further documentation is available on
the WALA wiki.
Our original implementation of the points-to analysis was based on Soot, a Java analysis framework from the Sable research group at McGill. This implementation is now part of Soot 2.2.5.
Calling edu.berkeley.pa.csdemand.DemandCSPointsTo.makeDefault() creates the PointsToAnalysis object for the analysis. Note that DemandCSPointsTo.makeDefault() assumes that the cg.spark phase has already been run, and will fail otherwise. The result of makeDefault() should be cached and re-used, as each call to makeDefault() does some potentially expensive construction of auxiliary data structures. For now, the PointsToAnalysis object only supports the reachingObjects(soot.Local) method, which returns a PointsToSet object that only supports the hasNonEmptyIntersection() method.
Contact Manu Sridharan with any questions / comments on the code, or just to let us know you are using it. We're eager to hear from and help new users!