返回 Bug 清单
BUG-0407project-13中已修复powershell

脚本「打印成功但实际没有修改」:方法重载参数错误被静默吞掉,是最危险的失败模式

发现:2026-10-03验证:2026-10-09置信度:85%

症状

自动化改写脚本报告成功,但目标文件未变;若未复核,会基于「已修复」的假设继续后续工作(本例据此误报过一次修复成功)。

根因

.NET String.Replace 只有 (old,new) 两参数重载;写成三参数会抛异常。但异常发生在赋值右值处,变量未被更新,后续「写入文件」写回的是原内容;而成功日志是无条件打印的,于是脚本报「✅ 已插入」但文件毫无变化。

修复方案

①改用 edit 工具或先校验替换确实发生:断言替换后内容长度/包含关系发生变化,未变化则报失败;②避免依赖带异常抛出的表达式做赋值,或显式 try/catch 并记录失败;③任何「批量改写」脚本结束后必须做一次独立的计数/内容复核对账(例如统计目标字符串出现次数、对比 diff)。

错误签名

PowerShell $c.Replace($old,$new,1) → Cannot find an overload for "Replace" and the argument count: "3";因异常中断赋值,写入的仍是原内容,但脚本仍打印已插入

技术信息

来源项目

project-13

标签

静默失败, 脚本可靠性, 自检缺失, project-13, mcp-reported