This rule is defined by the following XPath expression:
//CastExpression[Type/ReferenceType/ClassOrInterfaceType[@Image != "Object"]]//PrimaryExpression [ PrimaryPrefix/Name[ends-with(@Image, '.toArray')] and PrimarySuffix/Arguments[count(*) = 0] and count(PrimarySuffix) = 1 ]
Example:
import java.util.ArrayList; import java.util.Collection; public class Test { public static void main(String[] args) { Collection c=new ArrayList(); Integer obj=new Integer(1); c.add(obj); // this would trigger the rule (and throw a ClassCastException if executed) Integer[] a=(Integer [])c.toArray(); // this wouldn't trigger the rule Integer[] b=(Integer [])c.toArray(new Integer[c.size()]); } }