ProcessResults 处理扫描结果
(resultChan <-chan ScanResult)
| 133 | |
| 134 | // ProcessResults 处理扫描结果 |
| 135 | func (rp *ResultProcessor) ProcessResults(resultChan <-chan ScanResult) { |
| 136 | // 初始显示 |
| 137 | rp.displayFullScreen() |
| 138 | |
| 139 | for result := range resultChan { |
| 140 | rp.totalCount++ |
| 141 | |
| 142 | // 统计计数和输出日志 |
| 143 | if result.Error != "" { |
| 144 | rp.errorCount++ |
| 145 | // 不输出错误日志,减少噪音 |
| 146 | } else if result.Feasible { |
| 147 | rp.feasibleCount++ |
| 148 | |
| 149 | // 只有通过所有检测的结果才写入CSV文件 |
| 150 | if err := rp.csvWriter.WriteResult(result); err != nil { |
| 151 | printError(fmt.Sprintf("写入结果失败: %v", err)) |
| 152 | continue |
| 153 | } |
| 154 | |
| 155 | // 存储成功结果 |
| 156 | rp.successResults = append(rp.successResults, result) |
| 157 | |
| 158 | // 检查是否达到最大结果数 |
| 159 | if scanControl.StopOnMax && rp.feasibleCount >= scanControl.MaxResults { |
| 160 | rp.displayFullScreen() |
| 161 | fmt.Printf("\n🎉 已找到 %d 个符合条件的目标,达到设定上限,停止扫描\n", rp.feasibleCount) |
| 162 | break |
| 163 | } |
| 164 | } else { |
| 165 | // 不输出不符合条件的日志,减少噪音 |
| 166 | } |
| 167 | |
| 168 | // 每3秒更新一次状态信息 |
| 169 | if time.Since(rp.lastUpdate) >= 3*time.Second { |
| 170 | rp.displayFullScreen() |
| 171 | rp.lastUpdate = time.Now() |
| 172 | } |
| 173 | } |
| 174 | |
| 175 | // 输出最终统计 |
| 176 | rp.displayFullScreen() |
| 177 | fmt.Printf("═══════════════════════════════════════════════════════════════\n") |
| 178 | rp.printFinalStats() |
| 179 | } |
| 180 | |
| 181 | // displayFullScreen 全屏显示扫描状态 |
| 182 | func (rp *ResultProcessor) displayFullScreen() { |
no test coverage detected