Static analysis for dummies: experiencing LiSA
2021, Proceedings of the 10th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis
https://doi.org/10.1145/3460946.3464316Abstract
Semantics-based static analysis requires a significant theoretical background before being able to design and implement a new analysis. Unfortunately, the development of even a toy static analyzer from scratch requires to implement an infrastructure (parser, control flow graphs representation, fixpoint algorithms, etc.) that is too demanding for bachelor and master students in computer science. This approach difficulty can condition the acquisition of skills on software verification which are of major importance for the design of secure systems. In this paper, we show how LiSA (Library for Static Analysis) can play a role in that respect. LiSA implements the basic infrastructure that allows a non-expert user to develop even simple analyses (e.g., dataflow and numerical non-relational domains) focusing only on the design of the appropriate representation of the property of interest and of the sound approximation of the program statements. CCS Concepts: • Software and its engineering → General programming languages; • Theory of computation → Program analysis.
References (8)
- E. M. Clarke, E. A. Emerson, and A. P. Sistla. Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans. Program. Lang. Syst., 8(2):244-263, 1986. URL https://doi. org/10.1145/5397.5399.
- G. Costantini, P. Ferrara, and A. Cortesi. A suite of abstract domains for static analysis of string values. Softw. Pract. Exp., 45(2):245-287, 2015. URL https://doi.org/10.1002/spe.2218.
- P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. of the Fourth ACM Symposium on Principles of Programming, January 1977, pages 238-252. ACM, 1977. URL https: //doi.org/10.1145/512950.512973.
- P. Ferrara. A generic framework for heap and value analyses of object- oriented programming languages. Theor. Comput. Sci., 631:43-72, 2016. URL https://doi.org/10.1016/j.tcs.2016.04.001.
- J. C. King. Symbolic execution and program testing. Commun. ACM, 19(7):385-394, 1976. URL https://doi.org/10.1145/360248.360252.
- F. Logozzo and M. Fähndrich. Pentagons: A weakly relational abstract domain for the efficient validation of array accesses. Sci. Comput. Pro- gram., 75(9):796-807, 2010. URL https://doi.org/10.1016/j.scico.2009.04. 004.
- A. Miné. The octagon abstract domain. High. Order Symb. Comput., 19 (1):31-100, 2006. URL https://doi.org/10.1007/s10990-006-8609-1.
- F. Nielson, H. R. Nielson, and C. Hankin. Principles of program analysis. Springer, 1999. ISBN 978-3-540-65410-0. URL https://doi.org/10.1007/ 978-3-662-03811-6.