CodeQL documentation

Useless type test

ID: java/useless-type-test
Kind: problem
Severity: warning
Precision: very-high
   - maintainability
   - language-features
   - external/cwe/cwe-561
Query suites:
   - java-security-and-quality.qls

Click to see the query in the CodeQL repository

It is always the case that, for any type B, an instance of a type derived from B is also an instance of B. There is no need to explicitly test that this relationship exists.


Remove the unnecessary type test to simplify the code.


The following example shows an unnecessary type test.

public class UselessTypeTest {
	private static class B {}
	private static class D extends B {}

	public static void main(String[] args) {
		D d = new D();
		if(d instanceof B) {	// violation
			System.out.println("Mon dieu, d is a B!");