@Nullable checker for Java annotations.
- C/C++/ObjC: No
- Java: Yes
- C#/.Net: Yes
"I call it my billion-dollar mistake. It was the invention of the null reference in 1965."
Infer:Eradicate is a type checker for
@Nullable annotations for Java. It is part
of the Infer static analysis suite of tools. The goal is to eradicate null
Starting from @Nullable-annotated programs, the checker performs a flow sensitive analysis to propagate the nullability through assignments and calls, and flags errors for unprotected accesses to nullable values or inconsistent/missing annotations. It can also be used to add annotations to a previously un-annotated program.
If you say nothing, you're saying that the value cannot be null. This is the recommended option when possible:
Program safely, annotate nothing!
When this cannot be done, add a @Nullable annotation before the type to indicate that the value can be null.
Annotations are placed at the interface of method calls and field accesses:
- Parameters and return type of a method declaration.
- Field declarations.
Local variable declarations are not annotated: their nullability is inferred.
Eradicate can be invoked by adding the option
--eradicate to the checkers mode
as in this example:
The checker will report an error on the following program that accesses a nullable value without null check:
But it will not report an error on this guarded dereference:
The following issue types are reported by this checker: