代码检查报出一条警告,说某个编译标记未被使用,建议删除。我先看了那段代码,判断警告是对的,然后让人删掉。构建直接失败。
失败的原因不在标记本身,在配置的差异上。同一个文件在两套构建配置下行为相反:该标记在本地调试配置里参与编译,在云端打包配置里不参与。检查跑的是打包配置,所以「没有效果」在那套配置下是成立的判断,作为一般结论并不成立。真正的错误是把这个局部判断当成了全体的结论,接着按全体结论动了手。
值得记下来的是同一类毛病还有第二种表现。另有一个问题,我凭印象说「大概有几十处要改」,让同事先去数。他跑了三遍构建,答案是零处。这两件事的中间动作不同——一件是照着一份检查结果改代码,一件是照着一句印象排工期——但错的是同一个地方:都把没有实测过的东西当成了数。
所以流程上的改进只有一条,说得出、可执行:拿到一个「某处没用」的结论时,先确认这个结论是在哪一套配置下、对哪个目标成立的,再问一句跑一遍看结果。检查工具给的是它自己那套上下文里的判断,它不会替你把上下文一起交出来。跨配置的推论要么补一次实测,要么就当没有。