Spreadsheets are widely used, yet are error-prone: they use a weak type system, allowing certain operations that will silently return unexpected results, like comparisons of integer values with string values. However, discovering these issues is hard, since data and formulas can be dynamically set, read or modified. We propose a static analysis that detects all run-time type-unsafe operations in spreadsheets. It is based on an abstract interpretation of spreadsheet applications, including spreadsheet tables, global re-evaluation and associated programs. Our implementation supports the features commonly found in real-world spreadsheets. We ran our analyzer on the EUSES Spreadsheet Corpus. This evaluation shows that our tool is able to automatically verify a large number of real spread- sheets, runs in a reasonable time and discovers complex bugs that are difficult to detect by code review or by testing.
Dr. Xavier Rival is a research scientist at INRIA Paris-Rocquencourt, and a member of Abstraction Project/Team joint with École Normale Supérieure (Paris) and CNRS. His research interest is static analysis of softwares, in order to prove correctness properties (e.g., absence of runtime errors, functional correctness, etc) in an automatic way.