devgen

module
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2025 License: MIT

README

devgen

中文 | English

Go 代码生成工具集,通过注解自动生成样板代码,减少手写重复代码的工作量。

安装

# 安装 devgen(包含所有工具)
go install github.com/tlipoca9/devgen/cmd/devgen@latest

# 或单独安装
go install github.com/tlipoca9/devgen/cmd/enumgen@latest
go install github.com/tlipoca9/devgen/cmd/validategen@latest

使用

devgen ./...                    # 运行所有生成器
devgen --dry-run ./...          # 验证注解但不写入文件
devgen --dry-run --json ./...   # JSON 格式输出,用于 IDE 集成
enumgen ./...                   # 仅运行枚举生成器
validategen ./...               # 仅运行验证生成器

工具

enumgen - 枚举代码生成器

为 Go 枚举类型自动生成序列化、反序列化和验证方法。

// Status 表示状态
// enumgen:@enum(string, json, sql)
type Status int

const (
    StatusPending Status = iota + 1
    StatusActive
    // enumgen:@name(Cancelled)
    StatusCanceled  // 自定义名称
)

支持的选项

  • string - 生成 String() 方法
  • json - 生成 MarshalJSON() / UnmarshalJSON()
  • text - 生成 MarshalText() / UnmarshalText()
  • sql - 生成 Value() / Scan() 用于数据库操作

生成的辅助方法

  • IsValid() - 验证枚举值是否有效
  • {Type}Enums.List() - 返回所有有效枚举值
  • {Type}Enums.Parse(s) - 从字符串解析枚举
  • {Type}Enums.Name(v) - 获取枚举值的字符串名称

详见 enumgen README


validategen - 验证代码生成器

为 Go 结构体自动生成 Validate() 方法。

// User 用户模型
// validategen:@validate
type User struct {
    // validategen:@required
    // validategen:@min(2)
    // validategen:@max(50)
    Name string

    // validategen:@required
    // validategen:@email
    Email string

    // validategen:@gte(0)
    // validategen:@lte(150)
    Age int

    // validategen:@oneof(admin, user, guest)
    Role string
}

验证注解

类别 注解
必填 @required
范围 @min(n) @max(n) @len(n) @gt(n) @gte(n) @lt(n) @lte(n)
等值 @eq(v) @ne(v) @oneof(a, b, c)
格式 @email @url @uuid @ip @ipv4 @ipv6
字符 @alpha @alphanum @numeric
字符串 @contains(s) @excludes(s) @startswith(s) @endswith(s)
正则 @regex(pattern)
数据格式 @format(json|yaml|toml|csv)
嵌套 @method(MethodName)

高级特性

  • postValidate(errs []string) error 钩子实现自定义验证逻辑

详见 validategen README


vscode-devgen - VSCode 扩展

提供 devgen 注解的编辑器支持:语法高亮、自动补全、参数验证提示。

VS Marketplace

VS Code Marketplace 安装。


插件系统

devgen 支持通过插件机制扩展功能,允许用户使用 genkit 框架开发自定义代码生成工具。

支持两种插件类型:

  • source - Go 源码,运行时编译(推荐)
  • plugin - 预编译 Go plugin (.so)

插件可以实现 ConfigurableTool 接口来自描述配置,VSCode 扩展会通过 devgen config --json 自动获取注解元数据。

详见 插件开发文档示例

构建

make build    # 构建所有工具
make test     # 运行测试
make vscode   # 构建 VSCode 扩展

Release Notes

License

MIT

Directories

Path Synopsis
cmd
devgen command
Command devgen is a unified code generator that runs all devgen tools.
Command devgen is a unified code generator that runs all devgen tools.
enumgen command
Command enumgen generates enum helper methods.
Command enumgen generates enum helper methods.
enumgen/generator
Package generator provides enum code generation functionality.
Package generator provides enum code generation functionality.
golangcilint command
Command golangcilint integrates golangci-lint with devgen.
Command golangcilint integrates golangci-lint with devgen.
golangcilint/generator
Package generator provides golangci-lint integration for devgen.
Package generator provides golangci-lint integration for devgen.
validategen command
Command validategen generates Validate() methods for structs.
Command validategen generates Validate() methods for structs.
validategen/generator
Package generator provides validation code generation functionality.
Package generator provides validation code generation functionality.
examples
plugin/plugin-goplugin command
Package main provides a pre-compiled Go plugin (.so) example.
Package main provides a pre-compiled Go plugin (.so) example.
plugin/plugin-source command
Package main provides a source-type plugin example.
Package main provides a source-type plugin example.
Package genkit provides configuration types for devgen tools and plugins.
Package genkit provides configuration types for devgen tools and plugins.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL