Affiliation:
1. IBM T. J. Watson Research Center
2. IBM Haifa Research Lab
Abstract
This article addresses the challenge of sound typestate verification, with acceptable precision, for real-world Java programs. We present a novel framework for verification of typestate properties, including several new techniques to precisely treat aliases without undue performance costs. In particular, we present a flow-sensitive, context-sensitive, integrated verifier that utilizes a parametric abstract domain combining typestate and aliasing information. To scale to real programs without compromising precision, we present a staged verification system in which faster verifiers run as early stages which reduce the workload for later, more precise, stages.
We have evaluated our framework on a number of real Java programs, checking correct API usage for various Java standard libraries. The results show that our approach scales to hundreds of thousands of lines of code, and verifies correctness for 93% of the potential points of failure.
Publisher
Association for Computing Machinery (ACM)
Reference49 articles.
1. Checking and inferring local non-aliasing
2. Synthesis of interface specifications for Java classes
3. Automatic predicate abstraction of C programs
4. Automatically validating temporal safety properties of interfaces. In SPIN Workshop;Ball T.;Lecture Notes in Computer Science,2001
Cited by
92 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. REEF: A Framework for Collecting Real-World Vulnerabilities and Fixes;2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE);2023-09-11
2. Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics;Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis;2023-07-12
3. Context Sensitivity without Contexts: A Cut-Shortcut Approach to Fast and Precise Pointer Analysis;Proceedings of the ACM on Programming Languages;2023-06-06
4. Large‐scale characterization of Java streams;Software: Practice and Experience;2023-06-05
5. Fluent APIs in Functional Languages;Proceedings of the ACM on Programming Languages;2023-04-06