- SonarQube Community Build v25.10.0.114319
- Java Code
- Rule java:S4449 Nullness of parameters should be guaranteed
S4449 reports an issue for the the following Java code:
package org.example;
import com.google.common.collect.Iterables;
import java.util.List;
public class S4449GuavaIterablesGetLast {
Object test(List<Object> list) {
return Iterables.getLast(list, null);
}
}
It does not like the null parameter passed as defaultValue to Iterables#getLast of Guava version 33.5.0-jre.
The signature of the called Guava method is using org.jspecify.annotations.Nullable
@ParametricNullness
public static <T extends @Nullable Object> T getLast(
Iterable<? extends T> iterable, @ParametricNullness T defaultValue) {
Because T is declared as “extends @Nullable Object”, it should be possible to pass null as defaultValue.
I’ve attached the above source as minimal maven project.
test.zip (1.9 KB)
Cheers,
Andreas