missing_required_param 진단 — 필수 파라미터에 값을 안 줬어요

missing_required_param 진단 — 필수 파라미터에 값을 안 줬어요

Dart 분석기가 내보내는 missing_required_param 진단은 필수로 지정된 named 파라미터에 값을 제공하지 않고 함수(또는 메서드)를 호출했다는 뜻이에요.

출처: missing_required_param

본문

이 진단은 언제 발생해요?

analyzer는 필수(required)로 어노테이션된 named 파라미터를 가진 함수나 메서드를, 그 파라미터 값을 주지 않고 호출했을 때 이 진단을 내보내요. "이 파라미터는 꼭 채워야 하는데 안 채웠네요"라는 신호예요.

예시를 볼까요?

아래 코드에서 named 파라미터 x가 필수로 지정되어 있는데, f()를 호출할 때 값을 안 줘서 이 진단이 발생해요.

import 'package:meta/meta.dart';

// ignore: deprecated_member_use
void f({@required int? x}) {}

void g() {
  f();
}

어떻게 고치면 돼요?

필수로 요구되는 값을 호출부에서 채워주면 돼요.

import 'package:meta/meta.dart';

// ignore: deprecated_member_use
void f({@required int? x}) {}

void g() {
  f(x: 2);
}

무엇이 포인트예요?

여기 등장한 @requiredpackage:meta의 옛 방식 어노테이션이에요. 요즘 Dart에서는 언어 차원의 required 키워드를 쓰는 게 표준이라, 새로 작성하는 코드에서는 {required int x}처럼 쓰는 편이 좋아요. missing_required_param과 비슷한 이름의 missing_required_argument 진단도 있는데, 이쪽은 호출부에서 인자를 빠뜨린 경우를 다룬다는 점이 조금 달라요.

더 알아보기

  • named 파라미터와 required 키워드는 Functions 문서에서 자세히 볼 수 있어요.
  • Dart 분석기 진단 전체 목록은 Diagnostics 문서를 참고해 보세요.