Skip to content

Latest commit

 

History

History
81 lines (57 loc) · 2.33 KB

File metadata and controls

81 lines (57 loc) · 2.33 KB

Release v0.2.3

发布日期: 2025-12-08

概述

v0.2.3 是一个功能增强版本,validategen 新增了 @oneof_enum 注解用于枚举类型验证,新增 golangcilint 工具用于 IDE 诊断集成,VSCode 插件支持启动时全局验证。

新特性

validategen: @oneof_enum 枚举类型验证

新增 @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 诊断集成工具

新增 golangcilint 工具,用于 IDE 诊断集成。该工具可以作为 golangci-lint 的自定义 linter 使用,在编辑器中实时显示 devgen 注解的错误和警告。

VSCode 插件: 启动时全局验证

VSCode 插件现在支持在启动时运行全局 dry-run 验证,自动检测工作区内所有 Go 文件的 devgen 注解问题,并在 Problems 面板中显示诊断信息。

改进

devgen config 命令增强

devgen config 命令输出更详细的帮助信息,包括:

  • 所有可用工具及其注解
  • 参数类型和允许值
  • 配置文件格式说明
  • 输出格式选项

升级指南

从 v0.2.2 升级

直接升级即可,无破坏性变更:

go install github.com/tlipoca9/devgen/cmd/devgen@v0.2.3

如果使用了 @oneof_enum 验证,重新运行 devgen 生成代码。