Team Lande

Overall Objectives
Scientific Foundations
New Results
Contracts and Grants with Industry

Section: New Results

Keywords : Null pointer exceptions, Java, Static analysis.

Non-Null annotation inference

Participants : Laurent Hubert, Thomas Jensen, David Pichardie.

A common source of exceptional program behaviour is the dereferencing of null references (also called null pointers), resulting in segmentation faults in C or null pointer exceptions in Java. Even if such exceptions are caught, the presence of exception handlers creates an additional amount of potential branching which in turn implies that: 1) fewer optimizations are possible and 2) verification is more difficult (bigger certification conditions, implicit flow in information flow verification, etc.). Furthermore, the Java virtual machine is obliged to perform run-time checks for non-nullness of references when executing a number of its bytecode instructions, thereby incurring a performance penalty. For all these reasons, a static program analysis which can guarantee before execution of the program that certain references will definitely be non-null is useful.

We propose a nullness static analysis  [24] that automatically infers non-null annotations for local variables, method signatures and fields. The analysis has been mechanically proved sound in the Coq proof assistant. The Null-ability Inference Tool presented at PASTE'08  [23] is based on this work.


Logo Inria