unnecessary_null_comparison 진단: 절대 `null`이 될 수 없는 값과의 비교

unnecessary_null_comparison 진단: 절대 null이 될 수 없는 값과의 비교

==!=로 값을 비교할 때 한쪽이 null이고 다른 쪽이 절대 null이 될 수 없는 값이면, 그 비교는 항상 truefalse로 고정되므로 아무 쓸모가 없다는 것을 분석기가 알려주는 진단이에요.

출처: unnecessary_null_comparison

본문

설명

분석기는 == 또는 != 동등 비교에서 한쪽 피연산자가 null이고 다른 쪽이 null이 될 수 없을 때 이 진단을 만들어요. 이런 비교는 항상 true이거나 false로 결정되기 때문에 아무 목적이 없어요.

예시

아래 코드는 x가 절대 null이 될 수 없어서 비교가 항상 true로 평가되기 때문에 이 진단을 만들어요.

void f(int x) {
  if (x != null) {
    print(x);
  }
}

다음 코드는 x가 절대 null이 될 수 없어서 비교가 항상 false로 평가되기 때문에 이 진단을 만들어요.

void f(int x) {
  if (x == null) {
    throw ArgumentError("x can't be null");
  }
}

흔한 해결 방법

다른 쪽 피연산자가 null이 될 수 있어야 한다면, 그 피연산자의 타입을 널 타입으로 바꿔요.

void f(int? x) {
  if (x != null) {
    print(x);
  }
}

다른 쪽 피연산자가 정말 null이 될 수 없다면, 조건 자체를 제거해요.

void f(int x) {
  print(x);
}

더 알아보기