This rule is defined by the following XPath expression:
//PrimaryExpression[ PrimaryPrefix/Name[@Image = 'assertTrue' or @Image = 'assertFalse'] ][ PrimarySuffix/Arguments/ArgumentList[ Expression/EqualityExpression/PrimaryExpression/PrimaryPrefix/Literal/NullLiteral ] ] [ancestor::ClassOrInterfaceDeclaration[//ClassOrInterfaceType[typeof(@Image, 'junit.framework.TestCase','TestCase')] or //MarkerAnnotation/Name[typeof(@Image, 'org.junit.Test', 'Test')]]]
Example:
public class FooTest extends TestCase { void testCode() { Object a = doSomething(); assertTrue(a==null); // bad usage assertNull(a); // good usage assertTrue(a != null); // bad usage assertNotNull(a); // good usage } }