Putting static analysis to work for verification: A case study

  • Authors:
  • Tal Lev-Ami;Thomas Reps;Mooly Sagiv;Reinhard Wilhelm

  • Affiliations:
  • Tel-Aviv Univ., Tel-Aviv, Israel;Comp. Sci. Dept., Univ. of Wisconsin, Madison, WI;Dept. of Comp. Sci., Tel-Aviv Univ., Tel-Aviv, Israel;Informatik, Univ. of Saarlandes, Saarbrucken, Germany

  • Venue:
  • Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
  • Year:
  • 2000

Quantified Score

Hi-index 0.00

Visualization

Abstract

A method for finding bugs in code is presented. For given small numbers j and k, the code of a procedure is translated into a rela-tional formula whose models represent all execution traces that involve at most j heap cells and k loop iterations. This formula is conjoined with the negation of the procedure's specification. The models of the resulting formula, obtained using a constraint solver, are counterexamples: executions of the code that violate the specification.The method can analyze millions of executions in seconds, and thus rapidly expose quite subtle flaws. It can accommodate calls to procedures for which specifications but no code is avail-able. A range of standard properties (such as absence of null pointer dereferences) can also be easily checked, using prede-fined specifications.