Introduction

Welcome to the SAFE (Scalable And Flexible Error detection) project home page! The SAFE project develops software for verification of Java programs.

SAFE verifies that a Java program satisfies a particular set of specifications. SAFE applies static program analysis, a set of methods to analyze source code or object code, without requiring execution of the program.

SAFE provides a wide variety of program checkers. In particular, it provides a "structural checker" verifying simple structural properties, and a "typestate checker" verifying deeper properties using a more precise analysis.

SAFE has been designed for integration into a continuous integration tool. It has been integrated into CruiseControl, and also provides a command line mode, an Ant task, and Eclipse integration.

Typestate checking in the presence of aliasing

Our research has focused heavily on precise typestate checking in the presence of aliasing. In the typestate model, objects of a given type exist in one of finitely many states. The operations (i.e., method calls) permitted on an object depend on its state, and the operations can potentially alter an object's state. Typestate verification attempts to statically determine if the execution of a given program may cause an operation to be performed on an object in a state where the operation is not permitted.

Typestate checking can be used to verify that objects satisfy certain kinds of temporal properties; e.g., that an object is not used before it is initialized, or that a resource is not used after it is closed.

One of the principal difficulties in performing precise typestate checking (and software verification in general) arises from determining how aliasing interacts with operations on objects.

The goal of SAFE is to provide a scalable and flexible error-detection tool, based on typestate checking with varying degrees of cost and precision, mostly depending on the way in which aliasing is handled.

SAFE can be used for detecting violations of simple correctness properties, and for checking more sophisticated performance properties such as inefficient use of resources.

SAFE in action
From the integration within Eclipse, you can take a look at how the different analyzers can be executed. Results are collected within Analysis Results view.
Privacy |  Legal |  Feedback |  IBM Home |  Research Home |  Project List |  Research Sites |  Contact Us