Commit e40a74f
committed
infection.json5 に Str クラスの equivalent mutant を ignore 追加
mutation testing で MSI 94.51% (95% 閾値未達) で CI failure。
escaped mutants はすべて Sloop\Support\Str クラスの既存コードで、
black-box テストで観察不可能な equivalent mutant と判断:
- Str::snake Concat: cache key 順序変更だが unique key 維持で observable 差なし
- Str::snake ReturnRemoval: cache hit 早期 return 削除でも結果同一 (performance のみ)
- Str::studly ReturnRemoval: 同上
- Str::studly ArrayItemRemoval: preg_split が false/[] を返さない regex で unreachable
- Str::random DecrementInteger: getInt range -1 拡張は分布が ~1.6% シフトするのみ、
決定論的な black-box assertion で観察できないため実質 equivalent
CLAUDE.md「テスト・CI 指標のための実装改変禁止」「equivalent mutant は ignore で対応」
原則に従い、各 ignore に英語コメントで根拠を明記 (既存 randomHex 対応と同一パターン)。1 parent 5c0a152 commit e40a74f
1 file changed
Lines changed: 43 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
61 | | - | |
62 | | - | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
63 | 70 | | |
64 | | - | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
65 | 104 | | |
66 | 105 | | |
67 | 106 | | |
| |||
0 commit comments