This rule is defined by the following XPath expression:
//StatementExpression [ .//Name[@Image='assertTrue' or @Image='assertFalse'] and PrimaryExpression/PrimarySuffix/Arguments/ArgumentList /Expression/UnaryExpressionNotPlusMinus[@Image='!'] /PrimaryExpression/PrimaryPrefix ] [ancestor::ClassOrInterfaceDeclaration[//ClassOrInterfaceType[typeof(@Image, 'junit.framework.TestCase','TestCase')] or //MarkerAnnotation/Name[typeof(@Image, 'org.junit.Test', 'Test')]]]
Example:
public class SimpleTest extends TestCase { public void testX() { assertTrue("not empty", !r.isEmpty()); // replace with assertFalse("not empty", r.isEmpty()) assertFalse(!r.isEmpty()); // replace with assertTrue(r.isEmpty()) } }