- rule: java:S2259
- Context: java 25 with jspecify
- View with
- SonarQube Community Build - v25.12.0.117093
- SonarQube for IDE - 12.6.0.84973 (not connected)
When testing a condition on the nullability of a record attribute, we should have a warn as the record fields are immutable and set during the object instantiation:
package tech.lightframe.shift.core.cbs;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
import java.math.BigDecimal;
@NullMarked
public class Example {
public record MyClass(
@Nullable BigDecimal amount
) {
}
public BigDecimal checkValidity(MyClass obj) {
if (obj.amount() != null) {
return obj.amount().multiply(BigDecimal.ONE); // <= create a warn because consider obj.amount() could return null
// But obj is immutable, obj.amount() always return the same value
}
return BigDecimal.TEN;
}
}
It’s only an issue with sonar (create an issue in Sonar Qube), the compiler with `com.uber.nullaway` don’t have any issue with this syntax.
