Chord is a static analysis framework for Java with an emphasis on the analysis of objects and concurrency. It has the following characteristics:
stand-alone: provides various off-the-shelf static analyses (e.g., may alias analysis, thread escape analysis, datarace analysis, deadlock analysis, etc.).
extensible: allows users to build their own static analyses on top of the provided static analyses.
compositional: enables different static analyses to coexist and interact with each other.
efficient: caches results computed by each static analysis so that they can be reused by other static analyses without re-computation.
flexible: allows each static analysis to be expressed either declaratively as a Datalog program or imperatively as a Java program.