|Abstract||Analyzing methods in object-oriented programs whether they areside-effect free and also deterministic, i.e.,mathematically pure, hasbeen the target of extensive research. Identifying such methodshelps to find code smells and security related issues, and also helpsanalyses detecting concurrency bugs.Puremethods are also usedby formal verification approaches as the foundations for specifi-cations and proving thepurenessis necessary to ensure correctspecifications.
However, so far no common terminology exists which describesthe purity of methods. Furthermore, some terms (e.g.,pureorside-effect free) are also used inconsistently. Further, all current ap-proaches only report selected purity information making themonly suitable for a smaller subset of the potential use cases.
In this paper, we present a fine-grained unified lattice modelwhich puts the purity levels found in the literature into relationand which adds a new level that generalizes existing definitions.We have also implemented a scalable, modularized purity analysiswhich produces significantly more precise results for real-worldprograms than the best-performing related work. The analysisshows that all defined levels are found in real-world projects.|