메모리-누수-감사은(는) 무엇을 하나요?
코드에서 메모리 누수 및 해제 가능 문제를 감사합니다. 이벤트 리스너, DOM 핸들러, 생명주기 콜백을 검토하거나 누수 보고서를 수정할 때 사용하세요. addDisposableListener, Event.once, MutableDisposable, DisposableStore 및 onWillDispose 패턴을 다룹니다.
개요
이 감사 도구는 일반적인 메모리 누수 패턴을 식별하고, 해제 가능한 리소스가 적절히 관리되도록 보장합니다. 특히 TypeScript/JavaScript 프로젝트에서 Disposable 패턴을 사용하는 경우에 적합합니다.
사용 방법
CLI
npx microsoft/memory-leak-audit --target ./src
프로그래밍 방식
const { audit } = require('microsoft/memory-leak-audit');
const results = audit({
files: ['./src/**/*.ts'],
rules: ['addDisposableListener', 'MutableDisposable']
});
console.log(results);
지원 패턴
| 패턴 | 설명 |
|---|---|
addDisposableListener | 이벤트 리스너가 적절히 해제되었는지 확인 |
Event.once | 일회성 이벤트 리스너의 올바른 사용 확인 |
MutableDisposable | 변경 가능한 해제 가능 객체의 누수 방지 |
DisposableStore | 해제 가능 저장소가 적절히 관리되는지 확인 |
onWillDispose | 해제 전 콜백의 올바른 사용 확인 |
구성
.memory-leak-audit.json 파일을 만들어 규칙과 감사 수준을 사용자 정의할 수 있습니다:
{
"rules": {
"addDisposableListener": "error",
"Event.once": "warning",
"MutableDisposable": "error",
"DisposableStore": "error",
"onWillDispose": "warning"
},
"ignorePatterns": ["**/node_modules/**", "**/out/**"]
}
예제
잘못된 사용
// 누수 발생: 이벤트 리스너가 해제되지 않음
document.addEventListener('click', this.handleClick);
올바른 사용
// 해제 가능 리스너 사용
this._register(addDisposableListener(document, 'click', this.handleClick));
라이선스
MIT