package javax.annotation; import org.apache.commons.lang.BooleanUtils; import java.util.stream.Stream; @interface CheckForNull{} class A { public Boolean myMethod() { return null; // Noncompliant {{Null is returned but a "Boolean" is expected.}} } public Boolean myOtherMethod() { return Boolean.TRUE; // Compliant } A() { // constructor (with null return type) are not covered by the rule return; } } class B { private class Boolean { } public Boolean myMethod() { return null; // Compliant } public java.lang.Boolean myOtherMethod() { private class C { private java.lang.Boolean myInnerMethod() { return null; // Noncompliant {{Null is returned but a "Boolean" is expected.}} } private C foo() { return null; // Compliant } } return null; // Noncompliant [[sc=12;ec=16]] {{Null is returned but a "Boolean" is expected.}} } @CheckForNull public java.lang.Boolean myMethod() { return null; // compliant method is annotated with @CheckForNull } } class D { public Boolean foo() { class E { void bar() { return; } } Stream.of("A").forEach(a -> { return; // Compliant }); return true; } }