discarded_futures 린트 규칙
discarded_futures 린트 규칙
동기 함수 안에서 Future를 반환하는 호출을 함부로 버리지 않도록 지키는 린트 규칙이에요.
본문
async가 아닌 함수에서 비동기 호출을 하는 건 대부분 프로그래밍 오류의 신호예요. 일반적으로 이런 함수는 async로 표시하고, 그 Future는 unawaited_futures 규칙이 지키는 것처럼 await해야 해요.
비동기 함수를 async가 아닌 블록 안에서 호출하지 마세요.
나쁜 예
void recreateDir(String path) {
deleteDir(path);
createDir(path);
}
Future<void> deleteDir(String path) async {}
Future<void> createDir(String path) async {}
recreateDir은 async가 아닌데 그 안에서 deleteDir(path)와 createDir(path) 같은 비동기 함수를 호출하고 있어요. 반환된 Future가 그대로 버려지죠.
좋은 예
Future<void> recreateDir(String path) async {
await deleteDir(path);
await createDir(path);
}
Future<void> deleteDir(String path) async {}
Future<void> createDir(String path) async {}
함수를 async로 만들고 각 호출을 await해서 순서대로 완료되도록 했어요.
활성화 방법
이 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 discarded_futures을 추가하면 돼요.
linter:
rules:
- discarded_futures
linter > rules를 YAML map 문법으로 작성한다면 discarded_futures: true처럼 불리언 값을 지정해도 되고요.
linter:
rules:
discarded_futures: true
더 알아보기
버려질 Future를 의도적으로 무시해야 하는 경우엔 unawaited_futures 규칙과 unawaited() 함수를 함께 참고해 보세요. 린트 규칙 전체 목록은 공식 Linter rules 문서에서 확인할 수 있어요.