已关闭
bug: ConfirmOrAbort 在读取错误但有部分输入时吞没错误 #361
aflyingto创建于  6月27日关闭于  8月10日
aflyingto成员
6月27日 创建

发现来源

Agent 1 - 代码质量审查 (Low)

位置

pkg/cmdutil/confirm.go:36-47

证据

当 ReadString 返回错误但 input 非空时(如损坏终端读取部分数据),错误被静默丢弃,代码继续检查 input 并返回误导性的 'confirmation did not match' 而非真实的读取错误。

影响评估

极端边缘情况(终端损坏),但错误处理逻辑语义不正确。

建议修复方向

反转条件顺序:先检查 err != nil,再检查 input 是否为空。


🤖 Generated by daily multi-agent code review workflow

likedislike
Aaflyingto成员
6月27日 添加了label:risk/lowscope/cmdutil, status/triage,type/bug
Aaflyingto成员
7月1日 关联了里程碑:M3: Error Handling Consistency
Aaflyingto成员
8月9日 删除了label:status/triage
Aaflyingto成员
8月9日 添加了label:status/verified
Lliujinsheng成员
8月9日 添加了label:status/in-progress;删除了label:status/verified
Lliujinsheng成员
8月9日 关联了pull request:fix(cmdutil): report non-EOF read errors in ConfirmOrAbort
Aaflyingto成员
8月10日 关联了pull request:fix(cmdutil): surface read errors with partial input in ConfirmOrAbort (#361)
aflyingto成员
8月10日 评论:

开发进度

  • 根因: ConfirmOrAbort 的 if err != nil && strings.TrimSpace(input) == "" 条件只在 input 空时返回错误,input 非空时吞没错误返回误导性 'confirmation did not match'
  • 主要修改: confirm.go 反转条件——先检查 err != nil(EOF+空 → 非交互,其他 → 读取错误)+ 2 新测试(partial input + read error + EOF/空)
  • 测试: 8 测试 PASS(6 现有 + 2 新)
  • 关联 PR: #474
likedislike
Aaflyingto成员
8月10日 添加了label:status/merged
aflyingto成员
8月10日 评论:

问题已在 PR #474 合入主干后关闭(confirm.go + token_confirm.go 错误不再吞没)

likedislike
Aaflyingto成员
8月10日 关闭了 issue