In the last years almost all families of programming languages, from imperative to functional, logic, object-oriented and machine code, have been subject to static analysis by abstract interpretation. The use of a principled approach to static analysis based on the theory of abstract interpretation provided mathematical tools to reason about program properties and allowed for the rigorous and incremental design of precise and scalable static analyzers, ensuring soundness by construction. The large variety of abstract domains for many different programming languages, the ability to combine and refine them with standard abstract interpretation tools and the availability of mature abstract domain libraries allowed easily porting, reusing and experimenting with techniques born in a specific family to other programming languages and properties. Since the use of abstract interpretation for the analysis of object-oriented languages is less common than in other application fields of static analysis, in order to increase its adoption, we advocate the need to establish a common interface for designing and implementing abstract domains for the static analysis of Java-like programs. This interface should allow developing abstract domains pluggable in a generic abstract interpreter, as it is customary, for example, in abstract interpretation-based static analysis of numerical properties.
On the Need for a Common API for Abstract Domains of Object-Oriented Programs
Amato G.;Meo M. C.;Scozzari F.
2022-01-01
Abstract
In the last years almost all families of programming languages, from imperative to functional, logic, object-oriented and machine code, have been subject to static analysis by abstract interpretation. The use of a principled approach to static analysis based on the theory of abstract interpretation provided mathematical tools to reason about program properties and allowed for the rigorous and incremental design of precise and scalable static analyzers, ensuring soundness by construction. The large variety of abstract domains for many different programming languages, the ability to combine and refine them with standard abstract interpretation tools and the availability of mature abstract domain libraries allowed easily porting, reusing and experimenting with techniques born in a specific family to other programming languages and properties. Since the use of abstract interpretation for the analysis of object-oriented languages is less common than in other application fields of static analysis, in order to increase its adoption, we advocate the need to establish a common interface for designing and implementing abstract domains for the static analysis of Java-like programs. This interface should allow developing abstract domains pluggable in a generic abstract interpreter, as it is customary, for example, in abstract interpretation-based static analysis of numerical properties.I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.