'doNotStore'로 표시된 값을 반환하고 있어요

'doNotStore'로 표시된 값을 반환하고 있어요

return_of_do_not_store 진단은 doNotStore 어노테이션이 붙은 값을, 같은 어노테이션이 없는 메서드·getter·함수가 그대로 반환할 때 알려주는 경고예요. 보관하면 안 되는 값을 계속 흘려보내고 있는 건 아닌지 점검해 보라는 신호예요.

출처: '{0}' is annotated with 'doNotStore' and shouldn't be returned unless '{1}' is also annotated

본문

Dart 분석기는 doNotStore 어노테이션이 붙은 값이 메서드·getter·함수에서 반환되는데, 그 함수에는 같은 어노테이션이 없을 때 이 진단을 만들어요. 값이 "저장하면 안 된다"는 의미를 함수가 그대로 이어받지 않고 있어서 생기는 문제예요.

예시

아래 코드에서 f를 호출한 결과는 저장하면 안 되는데, 함수 g가 그 의미를 보존하도록 어노테이션돼 있지 않아서 이 진단이 발생해요.

import 'package:meta/meta.dart';

@doNotStore
int f() => 0;

int g() => f();

흔한 해결 방법

저장하면 안 되는 값이 실제로 반환해야 할 올바른 값이라면, 그 함수에도 doNotStore 어노테이션을 붙이면 돼요.

import 'package:meta/meta.dart';

@doNotStore
int f() => 0;

@doNotStore
int g() => f();

그렇지 않다면, 함수에서 다른 값을 반환하도록 바꾸면 돼요.

import 'package:meta/meta.dart';

@doNotStore
int f() => 0;

int g() => 0;

더 알아보기

  • Dart 분석기 진단 전체 목록 살펴보기: Dart diagnostics
  • meta 패키지의 doNotStore 어노테이션 살펴보기: package:meta