发布日期: 2025-12-08
v0.2.3 是一个功能增强版本,validategen 新增了 @oneof_enum 注解用于枚举类型验证,新增 golangcilint 工具用于 IDE 诊断集成,VSCode 插件支持启动时全局验证。
新增 @oneof_enum(EnumType) 注解,用于验证字段值是否为指定枚举类型的有效值。与 @oneof 不同,@oneof_enum 自动从 enumgen 生成的 EnumTypeEnums.Contains() 方法获取有效值,避免在 enum 新增值时需要同时修改 @oneof 注解。
同包 enum:
// enumgen:@enum(string)
type Role int
const (
RoleAdmin Role = iota
RoleUser
RoleGuest
)
// validategen:@validate
type User struct {
// validategen:@oneof_enum(Role)
Role Role // 自动使用 RoleEnums.Contains() 验证
}跨包 enum(完整 import 路径):
// validategen:@validate
type Request struct {
// validategen:@oneof_enum(github.com/myorg/pkg/types.Status)
Status types.Status // 自动 import "github.com/myorg/pkg/types"
}跨包 enum(指定 import alias):
// validategen:@validate
type Request struct {
// validategen:@oneof_enum(mytypes:github.com/myorg/pkg/types.Status)
Status mytypes.Status // 使用指定的 alias
}优势:当 enum 新增值时,只需修改 enum 定义,无需修改 @oneof_enum 注解,符合单一修改原则。
新增 golangcilint 工具,用于 IDE 诊断集成。该工具可以作为 golangci-lint 的自定义 linter 使用,在编辑器中实时显示 devgen 注解的错误和警告。
VSCode 插件现在支持在启动时运行全局 dry-run 验证,自动检测工作区内所有 Go 文件的 devgen 注解问题,并在 Problems 面板中显示诊断信息。
devgen config 命令输出更详细的帮助信息,包括:
- 所有可用工具及其注解
- 参数类型和允许值
- 配置文件格式说明
- 输出格式选项
直接升级即可,无破坏性变更:
go install github.com/tlipoca9/devgen/cmd/devgen@v0.2.3如果使用了 @oneof_enum 验证,重新运行 devgen 生成代码。