PR !368(#424)第二轮架构一致性评审发现。
5 条命令的本地 getBody() 函数是 cmdutil.ReadBody 的近乎完整副本(仅缺少 ScanContentForSecrets 调用),共 ~125 行重复代码:
getBody()
cmdutil.ReadBody
ScanContentForSecrets
pkg/cmd/issue/comment/comment.go:170
pkg/cmd/issue/comment/edit/edit.go:124
pkg/cmd/issue/edit/edit.go:267
pkg/cmd/pr/comment/comment.go:220
pkg/cmd/pr/comment/edit/edit.go:126
参考实现(issue create、pr create)已简化为一行委托:return cmdutil.ReadBody(opts.Body, opts.BodyFile, opts.IO.In)。
issue create
pr create
return cmdutil.ReadBody(opts.Body, opts.BodyFile, opts.IO.In)
重复是 #424 bug 的根因——cmdutil.ReadBody 加了扫描但本地副本未同步。若未来 ReadBody 新增安全检查,这 5 条路径会再次遗漏。
ReadBody
将 5 个本地 getBody() 替换为 return cmdutil.ReadBody(opts.Body, opts.BodyFile, opts.IO.In),删除重复逻辑。注意保留 strings.TrimSpace 行为差异(本地版对 file/stdin 内容做 TrimSpace,ReadBody 不做)——需评估是否统一。
strings.TrimSpace
来源
PR !368(#424)第二轮架构一致性评审发现。
问题
5 条命令的本地
getBody()函数是cmdutil.ReadBody的近乎完整副本(仅缺少ScanContentForSecrets调用),共 ~125 行重复代码:pkg/cmd/issue/comment/comment.go:170pkg/cmd/issue/comment/edit/edit.go:124pkg/cmd/issue/edit/edit.go:267pkg/cmd/pr/comment/comment.go:220pkg/cmd/pr/comment/edit/edit.go:126参考实现(
issue create、pr create)已简化为一行委托:return cmdutil.ReadBody(opts.Body, opts.BodyFile, opts.IO.In)。影响
重复是 #424 bug 的根因——
cmdutil.ReadBody加了扫描但本地副本未同步。若未来ReadBody新增安全检查,这 5 条路径会再次遗漏。修复方向
将 5 个本地
getBody()替换为return cmdutil.ReadBody(opts.Body, opts.BodyFile, opts.IO.In),删除重复逻辑。注意保留strings.TrimSpace行为差异(本地版对 file/stdin 内容做 TrimSpace,ReadBody 不做)——需评估是否统一。