missing_return 진단 — 함수가 return으로 끝나지 않아요

missing_return 진단 — 함수가 return으로 끝나지 않아요

Dart 분석기가 내보내는 missing_return 진단은 반환 타입이 있는 함수(또는 메서드)가 명시적인 return 문으로 끝나지 않았다는 뜻이에요.

출처: missing_return

본문

이 진단은 언제 발생해요?

명시적인 return이나 throw로 끝나지 않는 모든 함수와 메서드는 암묵적으로 null을 반환해요. 그런데 보통 이건 의도한 동작이 아닌 경우가 많아요. analyzer는 이처럼 암묵적인 return을 발견하면 이 진단을 내보내요.

예시를 볼까요?

아래 코드에서 f가 return 문으로 끝나지 않아서 이 진단이 발생해요. x가 0보다 크면 return 0;을 만나지만, 그 외의 경우에는 함수 끝에 도달하며 아무것도 반환하지 않게 되거든요.

int f(int x) {
  if (x > 0) {
    return 0;
  }
}

어떻게 고치면 돼요?

반환 값을 명시적으로 만드는 return 문을 추가해 주면 돼요. 적절한 값이 null이라도, 명시적으로 적어주는 게 좋아요.

int f(int x) {
  if (x > 0) {
    return 0;
  }
  return 0;
}

무엇이 포인트예요?

함수가 암묵적으로 null을 돌려주는 걸 방치하면, 반환 타입이 int인데 null이 나오는 등 의도와 다른 동작을 만들기 쉬워요. 모든 분기(if/else, switch 등)에서 함수가 반드시 반환값을 갖도록 흐름을 끝내주는 게 핵심이에요.

더 알아보기

  • 함수의 반환과 흐름 제어는 Functions 문서에서 확인할 수 있어요.
  • Dart 분석기 진단 전체 목록은 Diagnostics 문서를 참고해 보세요.