Repository navigation
v0.2.1
Release v0.2.1
发布日期: 2025-12-07
概述
v0.2.1 是一个重要的功能增强版本,新增了 --dry-run 命令用于 IDE 集成验证,enumgen 支持字符串底层类型,validategen 实现了 ValidatableTool 接口提供静态验证,VSCode 扩展改进了诊断功能和类型解析。
新特性
devgen: --dry-run 命令
新增 --dry-run 和 --json 标志,用于验证注解而不写入文件:
devgen --dry-run ./... # 验证并预览
devgen --dry-run --json ./... # JSON 格式输出,用于 IDE 集成输出格式:
{
"success": false,
"diagnostics": [
{
"severity": "error",
"message": "@method annotation can only be applied to custom types",
"file": "examples.go",
"line": 153,
"column": 2,
"tool": "validategen",
"code": "E009"
}
],
"stats": {
"packagesLoaded": 1,
"filesGenerated": 0,
"errorCount": 1,
"warningCount": 0
}
}enumgen: 字符串底层类型支持
enumgen 现在支持 string 作为底层类型:
// enumgen:@enum(string)
type Color string
const (
ColorRed Color = "red"
ColorGreen Color = "green"
ColorBlue Color = "blue"
)生成的方法:
IsValid()- 检查值是否有效String()- 返回字符串表示List()- 返回所有有效值Contains(string)- 检查字符串是否为有效值Parse(string)- 解析字符串为枚举值
注意: 字符串类型枚举不生成 Name()、Names()、ContainsName() 方法,也不支持 @name 注解。
支持的底层类型:
- 整数类型:
int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64 - 字符串类型:
string
enumgen: ValidatableTool 接口
enumgen 实现 ValidatableTool 接口,提供静态验证:
| 错误码 | 说明 |
|---|---|
| E001 | 不支持的底层类型 |
| E002 | 字符串类型不支持 @name 注解 |
| E003 | 重复的枚举名称 |
| E004 | @name 注解缺少参数 |
validategen: ValidatableTool 接口
validategen 实现 ValidatableTool 接口,提供全面的静态验证:
- 参数验证: 检查所有注解参数是否存在且格式正确
- 参数类型检查: 数值参数必须是有效数字
- 字段类型检查: 使用
UnderlyingType验证注解与字段类型的兼容性 - @method 验证: 检查目标类型是否为自定义类型
| 错误码 | 说明 |
|---|---|
| E001 | @OneOf 缺少值 |
| E002 | @Format 缺少格式参数 |
| E003 | 不支持的 @Format 格式 |
| E004 | @regex 缺少模式参数 |
| E005 | 无效的正则表达式 |
| E006 | 注解缺少必需参数 |
| E007 | 参数值无效(如数值参数不是数字) |
| E008 | 字段类型不支持该注解 |
| E009 | @method 只能用于自定义类型 |
genkit: 新增类型和 API
ValidatableTool接口: 工具可实现此接口提供静态验证DiagnosticCollector: 流式 API 用于收集诊断信息DryRunResult: dry-run 结果结构体Diagnostic: 诊断信息结构体,包含 severity、message、file、line、column、tool、codeField.UnderlyingType: 字段的底层类型(用于自定义类型如type Email string)Enum.UnderlyingType: 枚举的底层类型
VSCode 扩展改进
Dry-run 验证集成
- 新增
devgen.validate命令,手动触发验证 - 新增
devgen.validateOnSave配置项(默认true) - 保存和打开 Go 文件时自动运行
devgen --dry-run --json验证 - 验证结果显示在 Problems 面板
字段类型解析增强
修复了复杂类型的解析,现在正确支持:
[]Address- 切片类型[]*Address- 指针切片map[string]Address- map 类型map[string]*Address- 指针值 map
诊断清理修复
修复了保存文件后旧的诊断错误不清理的问题。
安装逻辑优化
检查 devgen 是否存在后再决定是否自动安装,避免覆盖本地开发版本。
插件版本兼容性
检测 genkit 包修改时间,自动清理过期的插件缓存,解决插件版本不匹配问题。
Bug 修复
- 修复
devgen --dry-run --json输出被日志(emoji 和 ANSI 颜色码)污染的问题 - 修复 VSCode 扩展中
[]Address被错误识别为map类型的问题 - 修复 dry-run 诊断在错误修复后不清理的问题
- 修复插件版本不匹配时的无限重试安装问题
升级指南
从 v0.2.0 升级
-
重新安装 devgen:
go install github.com/tlipoca9/devgen/cmd/devgen@v0.2.1
-
VSCode 扩展:更新到最新版本
-
重新生成代码:如果使用了 enumgen 的字符串类型枚举,需要重新运行
devgen