Sink 인스턴스는 반드시 close 해주세요
Sink 인스턴스는 반드시 close 해주세요
dart:core의 Sink 인스턴스는 사용한 뒤 반드시 close를 호출해 주세요. 닫지 않으면 메모리 누수나 예상치 못한 동작이 생길 수 있어요.
출처: close_sinks
본문
dart:core의 Sink 인스턴스에는 close를 호출하는 걸 권장해요.
Sink을 닫으면 메모리 누수와 예상치 못한 동작을 막을 수 있어요.
BAD 예시:
class A {
IOSink _sinkA;
void init(filename) {
_sinkA = File(filename).openWrite(); // LINT
}
}
BAD:
void someFunction() {
IOSink _sinkF; // LINT
}
GOOD 예시:
class B {
IOSink _sinkB;
void init(filename) {
_sinkB = File(filename).openWrite(); // OK
}
void dispose(filename) {
_sinkB.close();
}
}
GOOD:
void someFunctionOK() {
IOSink _sinkFOK; // OK
_sinkFOK.close();
}
알려진 제한 사항
이 규칙은 Sink이 만들어지고 닫히는 모든 패턴을 추적하지는 못해요. 자세한 내용은 sdk#57882를 참고해 주세요.
활성화하기
close_sinks 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 close_sinks를 추가하면 돼요.
linter:
rules:
- close_sinks
만약 linter 규칙을 YAML 맵 문법으로 설정한다면 linter > rules 아래에 close_sinks: true라고 적어 주면 돼요.
linter:
rules:
close_sinks: true
더 알아보기
- Linter rules 목록에서 다른 규칙도 살펴볼 수 있어요.
- 파일 입출력에서
Sink/IOSink사용법은 dart:io 문서에서 확인해 보세요.