The Immutability Toolbox seeks to answer the question: given code C and reference R, is the object O referenced by R mutated in the code C?. The toolbox contains robust implementations of two prominent approaches to immutability analysis. The first approach leverages a precise points-to analysis computed by the Points-to Toolbox to resolve aliasing relationships and compute object immutability. The second approach is a scalable type inference based approach described by Wei Huang et al. in their OOPSLA 2012 paper. The results of both analyses are computed natively in the Atlas program analysis framework and used to annotated a queryable program graph produced by Atlas making the results accessible to other analysis tasks critical to software validation and verification.


Analysis Tradeoffs

Since both implementations produce results in the same format, you can seamlessly swap out the analysis approach and choose the best analysis for your environment and task. For any industrial grade program analysis, it is important to know the accuracy boundaries (classes of inputs for which the tool cannot be guaranteed to report accurate results) and scalability of each approach. Since there is no single best analysis, here are the highlights.

Points-To Based Analysis

Type Inference Based Analysis

Getting Started

Ready to get started?

  1. First install the Immutability Toolbox plugin
  2. Then check out the provided tutorials to jump start your analysis

Source Code

Need additional resources? Checkout the Javadocs or grab a copy of the source.