pkg/cmdutil/flag_annotations.go:28
func SetFlagEnum(cmd *cobra.Command, name string, values ...string) { if err := cmd.Flags().SetAnnotation(name, FlagEnumAnnotation, values); err != nil { panic(fmt.Sprintf("failed to annotate flag %q: %v", name, err)) } }
该函数在注册 flag 注解失败时直接调用 panic(),违反 spec/foundations/coding-standards.md 中"禁止裸 panic"的规范。
panic()
spec/foundations/coding-standards.md
cobra.Command.RunE
将 SetFlagEnum 改为返回 error,由调用方在 NewCmd* 中决定如何处理(通常应在命令构造阶段尽早暴露问题)。
SetFlagEnum
NewCmd*
type/bug
scope/cmdutil
risk/low
source/daily-audit
status/triage
位置
pkg/cmdutil/flag_annotations.go:28证据
func SetFlagEnum(cmd *cobra.Command, name string, values ...string) { if err := cmd.Flags().SetAnnotation(name, FlagEnumAnnotation, values); err != nil { panic(fmt.Sprintf("failed to annotate flag %q: %v", name, err)) } }该函数在注册 flag 注解失败时直接调用
panic(),违反spec/foundations/coding-standards.md中"禁止裸 panic"的规范。影响
cobra.Command.RunE本身支持 error 返回语义,panic 绕过了这一错误处理机制建议修复
将
SetFlagEnum改为返回 error,由调用方在NewCmd*中决定如何处理(通常应在命令构造阶段尽早暴露问题)。标签
type/bugscope/cmdutilrisk/lowsource/daily-auditstatus/triage