扫描被中断后,判断已覆盖范围不能只看“扫到第几条”,而要同时看扫描清单是否完整、每条记录的状态是否落盘、以及中断点之后是否留下可续跑的边界。如果这三点都缺失,就需要重新扫描;如果清单和状态都在,只是执行中断,则可以从断点续跑并先校验边界几条,再决定是否全量重来。
同样是“中断”,处理方式完全不同。第一种是扫描过程中程序或页面被关闭,结果没有写回任何可读文件;第二种是扫描结果已经逐条写入日志或导出文件,只是任务被手动停止。判断方法很直接:打开你手中的结果文件,看最后一条记录是否带有完成状态和对应的时间戳。若文件里只有零散几条、没有收尾标记,通常属于第一种;若有连续记录且能看到最后处理到哪个对象,则属于第二种。
这个区分决定了下一步动作。第一种情况下,已覆盖范围无法可靠确认,因为未落盘的部分可能已经处理但没有留下痕迹。第二种情况下,可以基于最后一条记录推断覆盖边界,但推断成立的前提是记录顺序与扫描顺序一致,且没有并发写入造成乱序。
假设你手中有1000个页面需要检查,扫描进行到中途被叫停,日志里最后一条记录指向第420个页面。此时不要直接认定“已覆盖420个”。更稳妥的做法是抽取三组样本做边界验证:
如果前两组都完整、第三组为空,可以判断覆盖范围大致到中断点。如果中断点附近出现大量“处理中”或状态缺失,说明写入落后于执行,实际覆盖范围可能比日志显示的更靠后,也可能更靠前,此时续跑会产生重复处理,需要先清理这些中间状态。
续跑成立的条件是:扫描清单本身完整且未变动、每条记录有唯一标识、中断点之后的对象没有被其他任务修改过。满足这些条件时,从断点继续可以节省时间,代价是需要额外一步校验,确认断点前后没有遗漏或重复。实际操作中,可以先对断点后的一小批对象试跑,观察结果是否与预期一致,再放开全量续跑。
重扫成立的条件是:清单在中断期间发生过变化、记录缺少唯一标识、或者无法确认写入是否完整。重扫的代价是时间成本翻倍,但好处是覆盖范围重新变得可验证,不需要在旧结果上做假设。对于对象数量不大、或者结果将直接用于对外交付的场景,重扫往往比修补更省心。
一个简单的判断规则:如果修复断点所需的人工核对时间接近重扫时间的一半,就直接重扫。这个比较不依赖具体工具,只需要你估算核对边界样本和清理中间状态需要多少操作步骤。
确认覆盖范围后,动作应当具体到可执行:
这些动作的结果会直接影响后续判断:清理后续跑成功,说明中断只是执行问题;重扫后边界样本仍然对不上,说明问题出在清单本身或对象状态,而不是扫描过程。此时需要先解决清单的一致性问题,再谈覆盖范围。
不同工具的日志格式、断点续跑能力和状态标记方式并不相同。上述方法只依赖你手中已有的结果文件和清单,不假设某个按钮或入口的存在。如果工具本身提供任务进度或断点记录,具体字段含义和可用性需要以你当前使用的版本为准,必要时通过导出文件自行核对,而不是依赖界面上的百分比数字。
判断已覆盖范围的核心不是找到某个权威数字,而是建立一条可验证的证据链:清单完整、状态落盘、边界可查。三者齐备时,中断只是暂停;缺任意一项时,重扫是更稳妥的选择。