Chord: A Program Analysis Platform for Java
Mayur Naik
April 16, 2011
Preface
Organization of this Guide
Acknowledgments
Guide for End-Users
What is Chord?
Getting Started
Downloading Binaries
Downloading Source Code
Compiling the Source Code
Running Chord
Chord Properties
How to Set Properties
Recognized Properties
Java Program Properties
Analysis Scope Properties
Functionality Properties
Project Properties
Instrumentation Properties
Caching Properties
Chord JVM Properties
BDD Properties
Output Location Properties
Setting up a Java Program for Analysis
Analysis Scope Construction
Scope Reuse
Scope Construction Algorithms
Rapid Type Analysis
Class Hierarchy Analysis
Dynamic Analysis
Scope Exclusion
Predefined Analyses
Running an Analysis
Points-to and Call-Graph Analyses
Context-Insensitive Analysis
Context-Sensitive Analysis
Static Datarace Analysis
Static Deadlock Analysis
Guide for Developers
Architecture of Chord
Java Program Representation
Pretty-Printing
Whole Program
Class Members
Methods
Control-Flow Graphs
Quads
Traversing Quadcode
A Chord Project: Tasks, Targets, and Dependencies
Writing an Analysis
JavaAnalysis
ProgramDom
ProgramRel
DlogAnalysis
DynamicAnalysis
RHSAnalysis
Running an Analysis
Dynamic Analysis
Writing a Dynamic Analysis
Compiling and Running a Dynamic Analysis
Common Dynamic Analysis Events
Datalog Analysis
Writing a Datalog Analysis
Tuning Performance
BDD Representation
mhn@cs.stanford.edu