import java.util.Optional; class A { Optional<String> getOptional() { return Optional.of(""); } Optional<String> optional; A() { this(Optional.empty()); } A(Optional<String> s) { s.get(); // Noncompliant [[flows=A]] {{Call "s.isPresent()" before accessing the value.}} flow@A {{Optional s is accessed}} if (s.isPresent()) { s.get(); // Compliant } } void foo() { getOptional().get(); // Noncompliant [[flows=foo]] {{Call "Optional#isPresent()" before accessing the value.}} flow@foo {{Optional is accessed}} } void bar() { Optional<String> s = getOptional(); if (s.isPresent()) { s.get(); // Compliant if (!s.isPresent()) { // condition always false s.get(); // Compliant - dead code } } s.get(); // Noncompliant } void dul() { Optional<String> s = getOptional(); if (!s.isPresent()) { if (s.isPresent()) { // condition always false s.get(); // Compliant - dead code } s.get(); // Noncompliant [[flows=dul]] flow@dul } s.get(); // Compliant } void qix() { Optional<String> s = optional; if (s.isPresent()) { s.get(); // Compliant } s.get(); // Noncompliant [[flows=qix]] flow@qix } String mug(Optional<String> s) { return s.isPresent() ? null : s.get(); // Noncompliant [[flows=mug]] flow@mug } }