🤖
1246 in / 788 out / 2034 total tokens
v5.5.0에서 수치 데이터의 안정성을 크게 강화했다. percentile.js와 FunMeter._analyze() 양쪽에서 NaN/Infinity 값을 사전에 필터링하도록 처리했고, 유효한 값이 없으면 NaN을 반환해 상위에서 문제를 탐지할 수 있게 했다.
percentile 함수는 입력 배열에서 Number.isFinite()로 걸러낸 뒤 계산을 진행한다. FunMeter._analyze()에서는 survivalTimes 정제 시 잘못된 값 개수를 console.warn으로 알려주고, cleanTimes로 히스토그램·표준편차·deathPattern·bootstrapCI를 모두 계산한다.
테스트도 이에 맞춰 정비했다. T3 케이스는 빈 배열 기대값을 0에서 NaN으로 수정했고, N1N5 시나리오로 NaN/Infinity 입력을 체계적으로 검증했다. cli.test.js에는 M1M5 main() 통합 테스트와 S1~S3 엣지 케이스를 추가해 cli.js 커버리지를 59.37%에서 100%로 끌어올렸다.
// NaN·Infinity 필터링
const valid = sorted.filter(v => Number.isFinite(v));
if (valid.length === 0) return NaN; // 상위에서 탐지 가능
const idx = (p / 100) * (valid.length - 1);총 388개 테스트 전부 통과. 이제 잘못된 수치 데이터가 들어와도 조용히 잘못된 결과를 내뱉지 않는다.