Chord: A Program Analysis Platform for Java


What's New 

About

Chord is a program analysis platform that enables users to productively design, implement, and evaluate a broad variety of static and dynamic program analyses for Java bytecode. It has the following key features:

  • It provides various off-the-shelf analyses (e.g., various may-alias and call-graph analyses; thread-escape analysis; static and dynamic concurrency analyses for finding races, deadlocks, atomicity violations; etc.)
  • It allows users to express a broad range of analyses, including both static and dynamic analyses, analyses written imperatively in Java or declaratively in Datalog, context-sensitive inter-procedural analyses (summary-based and cloning-based), iterative refinement-based analyses, client-driven analyses, and combined static/dynamic analyses.
  • It executes analyses in a demand-driven fashion, caches results computed by each analysis for reuse by other analyses without re-computation, and can execute analyses without dependencies between them in parallel.
  • It guarantees that the result is the same regardless of the order in which different analyses are executed; moreover, results can be shared across different runs.

Chord is portable and has been tested on a variety of platforms, including Linux, Windows/Cygwin, and MacOS. It is open source software distributed under the New BSD License.


Documentation
Talks
Questions?

For questions about Chord, send email to chord-discuss{at}googlegroups.com or browse the archives. Posting does not require membership but posts by non-members are moderated to avoid spamming group members.


People

The Chord project started as part of Mayur Naik's doctoral work at Stanford University with Alex Aiken.

Since then, many have contributed algorithms, code, and applications to Chord, including: Byung-Gon ChunDavid GayRadu GrigorePallavi Joshi, Sulekha KulkarniZhifeng Lai, Sangmin LeePercy Liang, Ravi Mangal, Chang-Seo Park, Ariel Rabkin, Mooly Sagiv, Koushik Sen, and Omer Tripp, Hongseok Yang, and Xin Zhang.

Mayur Naik and Ariel Rabkin currently maintain Chord's source code.


Acknowledgments

Chord is supported in part by grants from the National Science Foundation, an equipment grant from Intel, and a Microsoft fellowship during 2005-2007.