ARC++: Effective typestate and lifetime dependency analysis

Xusheng Xiao, Gogul Balakrishnan, Franjo Ivančić, Naoto Maeda, Aarti Gupta, Deepak Chhetri

Research output: Chapter in Book/Report/Conference proceedingConference contribution

8 Scopus citations

Abstract

The ever-increasing reliance of today's society on software requires scalable and precise techniques for checking the correctness, reliability, and robustness of software. Object-oriented languages have been used extensively to build largescale systems, including Java and C++. While many scalable static analysis approaches for C and Java have been proposed, there has been comparatively little work on the static analysis of C++ programs. In this paper, we provide an abstract representation to model C++ objects, containers, references, raw pointers, and smart pointers. Further, we present a new analysis called lifetime dependency analysis, which allows us to precisely track the complex lifetime semantics of temporary objects in C++. Finally, we propose an implementation of our techniques and present promising results on a large variety of open-source software.

Original languageEnglish (US)
Title of host publication2014 International Symposium on Software Testing and Analysis, ISSTA 2014 - Proceedings
PublisherAssociation for Computing Machinery, Inc
Pages116-126
Number of pages11
ISBN (Electronic)9781450326452
DOIs
StatePublished - Jul 21 2014
Event23rd International Symposium on Software Testing and Analysis, ISSTA 2014 - San Jose, United States
Duration: Jul 21 2014Jul 25 2014

Publication series

Name2014 International Symposium on Software Testing and Analysis, ISSTA 2014 - Proceedings

Other

Other23rd International Symposium on Software Testing and Analysis, ISSTA 2014
Country/TerritoryUnited States
CitySan Jose
Period7/21/147/25/14

All Science Journal Classification (ASJC) codes

  • Software

Keywords

  • Abstract representation
  • Bug finding
  • C++
  • Static analysis
  • Typestate analysis

Fingerprint

Dive into the research topics of 'ARC++: Effective typestate and lifetime dependency analysis'. Together they form a unique fingerprint.

Cite this