Releases: tlipoca9/devgen
v0.3.6
v0.3.6 Release Notes
新功能
1. Kubernetes 资源验证注解
新增四个 Kubernetes 相关的验证注解,用于验证资源规格和 DNS 名称:
@dns1123_label - DNS 标签验证
验证字符串符合 RFC 1123 DNS 标签规范,适用于 Kubernetes 对象命名。
// validategen:@validate
type KubernetesObject struct {
// validategen:@required
// validategen:@dns1123_label
Namespace string // "default", "kube-system" ✓
// validategen:@required
// validategen:@dns1123_label
PodName string // "my-pod-123" ✓, "Pod" ✗, "-invalid" ✗
}DNS 标签规则:
- 只能包含小写字母、数字和连字符
- 必须以字母或数字开头和结尾
- 每个标签最多 63 个字符
@cpu - CPU 资源验证
验证 Kubernetes CPU 资源数量格式。
// validategen:@validate
type PodSpec struct {
// validategen:@required
// validategen:@cpu
CPURequest string // "500m", "1", "2" ✓
}支持的格式: 毫核 (500m)、核数 (1, 0.5)、科学记数法 (1e3m)
@memory - 内存资源验证
验证 Kubernetes 内存资源数量格式。
// validategen:@validate
type PodSpec struct {
// validategen:@required
// validategen:@memory
MemoryRequest string // "128Mi", "1Gi" ✓
}支持的格式: 二进制单位 (128Mi, 1Gi)、十进制单位 (128M, 1G)、字节数
@disk - 磁盘资源验证
验证 Kubernetes 存储资源数量格式。
// validategen:@validate
type PersistentVolume struct {
// validategen:@required
// validategen:@disk
StorageRequest string // "10Gi", "100Gi" ✓
}2. 字符串枚举别名类型支持
@oneof_enum 现在支持字符串类型的枚举别名:
// enumgen:@enum(string)
type Priority string
const (
PriorityLow Priority = "low"
PriorityMedium Priority = "medium"
PriorityHigh Priority = "high"
)
// validategen:@validate
type Task struct {
// validategen:@oneof_enum(Priority)
Priority Priority // 自动验证是否为有效的 Priority 值
}改进
文档更新
- 更新 validategen README,添加新注解的详细说明和示例
- 更新 AI Rules 文档,包含 Kubernetes 资源验证的使用指南
代码清理
- 移除未使用的函数,减少代码体积
- 修复 Makefile 中 ginkgo coverprofile 路径问题
升级指南
直接升级即可,无破坏性变更:
go install github.com/tlipoca9/devgen/cmd/devgen@v0.3.6v0.3.5
devgen v0.3.5 发布说明
🚀 新功能
validategen: @default 注解支持
新增 @default 注解,用于为结构体字段设置默认值。当字段为零值时,自动应用默认值。
使用示例
// validategen:@validate
type Config struct {
// validategen:@default(localhost)
Host string // 默认 "localhost"
// validategen:@default(8080)
Port int // 默认 8080
// validategen:@default(true)
Enabled bool // 默认 true
// validategen:@default(1.0)
Version float64 // 默认 1.0
}生成的代码
生成独立的 SetDefaults() 方法,在验证前调用:
cfg := &Config{}
cfg.SetDefaults() // 设置默认值
if err := cfg.Validate(); err != nil {
// 处理错误
}支持的类型
string- 设置默认字符串值- 数值类型 (
int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64,float32,float64) - 设置默认数值 bool- 设置默认布尔值 (true/false)
validategen: SetDefaults 测试生成
使用 --include-tests 标志时,自动为 SetDefaults() 方法生成测试代码:
devgen --include-tests ./...📝 文档更新
- validategen README 新增
@default注解说明 - 更新注解速查表
🔄 从 v0.3.4 升级
无破坏性变更,直接升级即可使用新功能。
go install github.com/tlipoca9/devgen/cmd/devgen@v0.3.5完整更新日志: v0.3.4...v0.3.5
v0.3.4
devgen v0.3.4 发布说明
🚀 新功能
统一 AI 规则管理
- 项目级规则配置:新增
.devgen/rules/目录支持,允许项目自定义 AI 规则 - 配置化规则加载:通过
devgen.toml中的[rules]配置控制规则来源 - 多 IDE 批量生成:支持
--agent all一次性为所有 IDE 生成规则文件 - 规则文件解析器:新增 Markdown + YAML frontmatter 解析支持
🔧 改进
适配器系统优化
- Kiro 适配器:修复
fileMatchPattern处理逻辑,支持description字段 - CodeBuddy/Cursor 适配器:空
globs时不生成globs字段,避免无效配置 - 默认匹配模式:Kiro 在 fileMatch 模式下默认匹配所有文件 (
**/*)
规则管理重构
- 目录迁移:将项目规则从各 IDE 目录迁移到统一的
.devgen/rules/ - 条件加载:仅在显式配置
source_dir时加载项目规则 - 内置规则控制:通过
include_builtin选项控制是否包含 devgen 内置规则
📝 配置示例
devgen.toml 配置
[rules]
# 项目规则目录(可选)
source_dir = ".devgen/rules"
# 是否包含内置规则(默认 true)
include_builtin = true项目规则文件格式
---
description: 自定义规则描述
globs:
- "**/*.go"
- "**/*.ts"
alwaysApply: false
---
# 规则标题
规则内容...🛠️ 使用方法
# 为所有 IDE 生成规则
devgen rules --agent all -w
# 为特定 IDE 生成规则
devgen rules --agent kiro -w
devgen rules --agent codebuddy -w
devgen rules --agent cursor -w
# 预览规则内容(不写入文件)
devgen rules --agent kiro📊 技术细节
- 新增文件:
genkit/rule_loader.go、genkit/rule_loader_test.go - 配置扩展:
genkit/config.go新增RulesConfig结构 - 测试覆盖:新增 325 行测试代码,确保功能稳定性
- 文档更新:README 更新 AI Rules 功能说明
🔄 迁移指南
从 v0.3.3 升级
- 自动迁移:现有 IDE 规则文件已自动清理
- 配置可选:无需修改现有配置,默认行为保持不变
- 新功能启用:如需使用项目规则,在
devgen.toml中配置[rules]部分
项目规则设置
# 1. 创建规则目录
mkdir -p .devgen/rules
# 2. 添加配置到 devgen.toml
echo '[rules]' >> devgen.toml
echo 'source_dir = ".devgen/rules"' >> devgen.toml
# 3. 创建自定义规则文件
# 在 .devgen/rules/ 中添加 .md 文件
# 4. 生成 IDE 规则
devgen rules --agent all -w完整更新日志: v0.3.3...v0.3.4
v0.3.3
v0.3.3 - 2025-12-09
🎉 新特性
AI Rules Adapter 系统
实现了全新的 AI Rules Adapter 系统,支持为多个 AI 编程助手生成定制化的规则文档。
支持的 AI 助手:
- Kiro - 输出到
.kiro/steering/*.md - CodeBuddy - 输出到
.codebuddy/rules/*.mdc - Cursor - 输出到
.cursor/rules/*.mdc
新增命令:
# 列出支持的 AI 助手
devgen rules --list-agents
# 预览规则内容(不写入文件)
devgen rules --agent kiro
# 生成规则文件
devgen rules --agent kiro -w
devgen rules --agent codebuddy -w
devgen rules --agent cursor -wVSCode 扩展增强
- 自动检测 Kiro IDE 并生成对应的 rules 文件
- 改进了 AI IDE 检测逻辑
📚 文档改进
Rules 文档大幅扩充
所有工具的 rules 文档都进行了全面改进和扩充:
- devgen.md - devgen 综合使用指南
- devgen-plugin.md - 插件开发完整指南
- devgen-genkit.md - genkit API 详细参考
- devgen-rules.md - AI Rules 系统文档
- devgen-tool-enumgen.md - enumgen 详细文档
- devgen-tool-validategen.md - validategen 详细文档
每个文档都包含:
- 详细的使用场景说明
- 完整的代码示例
- 常见错误和解决方案
- 最佳实践建议
新增文档
docs/rules-adapter.md- Adapter 系统中文文档docs/rules-adapter_EN.md- Adapter 系统英文文档.kiro/steering/release-workflow.md- 发布流程文档
🔧 改进
代码质量
- 修复测试中
os.Chdir的错误处理 - 添加了完整的 adapter 系统测试
- 改进了测试覆盖率
文档一致性
- 移除了不支持的 GitHub Copilot 相关文档
- 将 Windsurf 相关引用统一替换为 Kiro
- 更新了 README 中的 AI Rules 说明
🏗️ 架构改进
Adapter 注册表
实现了可扩展的 adapter 注册表系统:
type AgentAdapter interface {
Name() string
OutputDir() string
Transform(rule genkit.Rule) (filename string, content string, err error)
}内置 adapters:
KiroAdapter- 支持 YAML frontmatter 和 fileMatchPatternCodeBuddyAdapter- 支持 .mdc 格式和 globsCursorAdapter- 与 CodeBuddy 格式兼容
📦 技术细节
新增文件
genkit/adapter.go- Adapter 接口定义genkit/adapter_kiro.go- Kiro adapter 实现genkit/adapter_codebuddy.go- CodeBuddy adapter 实现genkit/adapter_cursor.go- Cursor adapter 实现genkit/adapter_registry.go- Adapter 注册表genkit/adapter_test.go- Adapter 测试cmd/devgen/rules_command.go- Rules 命令实现cmd/devgen/rules_command_test.go- Rules 命令测试
变更统计
52 files changed, 21,666 insertions(+), 3,690 deletions(-)
🚀 使用示例
为你的 AI 助手生成 rules
# 如果你使用 Kiro
devgen rules --agent kiro -w
# 如果你使用 CodeBuddy
devgen rules --agent codebuddy -w
# 如果你使用 Cursor
devgen rules --agent cursor -w生成后,AI 助手将能够:
- ✅ 理解 devgen 的注解语法
- ✅ 提供准确的代码补全建议
- ✅ 给出正确的使用示例
- ✅ 建议最佳实践
📝 升级说明
从 v0.3.2 升级到 v0.3.3:
go install github.com/tlipoca9/devgen/cmd/devgen@v0.3.3如果你使用 VSCode 扩展,它会自动更新。
🙏 致谢
感谢所有使用 devgen 并提供反馈的开发者!
完整变更日志: v0.3.2...v0.3.3
v0.3.2
v0.3.2 Release Notes
Bug 修复
validategen: 修复 @oneof_enum 对 string 类型字段和跨包导入的支持
问题描述:
@oneof_enum注解之前仅支持自定义枚举类型字段,不支持string类型字段- 当枚举类型定义在其他包时,生成的验证代码和测试代码缺少必要的 import 语句
修复内容:
-
支持 string 类型字段使用
@oneof_enum现在可以对
string类型字段使用@oneof_enum注解:// validategen:@validate type Config struct { // validategen:@oneof_enum(Status) StatusStr string // 验证值必须是 Status 枚举的有效字符串 }
-
支持跨包枚举类型
当引用其他包的枚举类型时,生成的代码会自动添加正确的 import:
import "myapp/common" // validategen:@validate type Order struct { // validategen:@oneof_enum(common.Priority) Priority string // 引用 common 包的 Priority 枚举 }
-
测试代码跨包导入修复
生成的
*_validate_test.go文件现在会正确导入跨包类型。
新增示例:
cmd/validategen/examples/common/- 跨包枚举类型示例types.go- 定义Status枚举common_enum.go- 生成的枚举辅助方法
v0.3.1
v0.3.1 Release Notes
新功能
1. 测试文件自动生成 (--include-tests)
新增 --include-tests 命令行标志,让 devgen 在生成代码的同时自动生成对应的测试文件。
devgen --include-tests ./...genkit 框架变更:
Options新增IncludeTests字段Generator新增IncludeTests()方法,供工具查询是否需要生成测试文件
enumgen 生成的测试文件 (*_enum_test.go):
Test<Type>_IsValid- 测试所有枚举值的有效性Test<Type>_String- 测试 String() 方法(如启用)Test<Type>Enums_List- 验证 List() 返回的枚举值列表Test<Type>Enums_Names- 验证 Names() 返回的名称列表Test<Type>Enums_Name- 测试 Name() 方法Test<Type>Enums_ContainsName- 测试 ContainsName() 方法- JSON/Text/SQL 序列化测试(如启用对应选项)
validategen 生成的测试文件 (*_validate_test.go):
- 为每个验证类型生成表驱动测试
- 自动生成有效和无效的测试用例
- 支持
@required、@gt、@lt、@gte、@lte、@email、@url等规则的测试
validategen 内部重构:
- 将
Validate()方法拆分为三部分:_validate()- 字段级验证(不含@method)_validateMethod()- 仅@method验证Validate()- 组合调用上述方法 +postValidate()
- 这种拆分便于单独测试字段验证逻辑,无需构造嵌套类型
2. VSCode 扩展 AI Rules 生成提示
当在 AI IDE(如 CodeBuddy)中打开 Go 项目时,扩展会询问是否生成 .codebuddy/rules/ 文件:
- 生成 - 本次生成
- 始终生成 - 保存到工作区设置,以后自动生成
- 不再提示 - 保存到工作区设置,不再询问
配置项:devgen.rules.autoGenerate(可选值:ask、always、never)
3. Duration 验证代码可读性改进
validategen 生成的 duration 比较代码现在使用 time.Duration 常量,更易读:
// 之前
if d < 1000000000 { // 1s
return errors.New("...")
}
// 现在
if d < 1*time.Second {
return errors.New("...")
}改进
Makefile 变更
- 新增
generatetarget,运行go run ./cmd/devgen --include-tests ./... alltarget 现在包含generate步骤:tidy → generate → lint → test → buildtesttarget 添加--keep-going参数,测试失败时继续运行其他测试
插件加载日志优化
# 之前
Loaded plugin: markgen
# 现在
📂 [LOAD] Loaded 1 plugin(s)
• 'markgen'
v0.3.0
Release v0.3.0
发布日期: 2025-12-08
概述
v0.3.0 是一个重要的功能版本,新增了 AI Rules 系统,让 AI 编程助手(如 CodeBuddy、Cursor 等)能够理解 devgen 工具的使用方式,提供更准确的代码建议。
新特性
AI Rules 系统
新增 devgen rules 命令,用于生成 AI 编程助手可以理解的规则文件。
列出支持的 AI Agents:
devgen rules --list-agents预览 Rules 内容:
devgen rules --agent codebuddy生成 Rules 文件:
devgen rules --agent codebuddy -w生成的规则文件位于 .codebuddy/rules/ 目录,包含:
enumgen.md- 枚举代码生成工具使用指南validategen.md- 结构体验证代码生成工具使用指南devgen.md- devgen 综合使用指南devgen-plugin.md- 插件开发指南devgen-genkit.md- genkit API 参考devgen-rules.md- AI Rules 系统说明
RuleTool 接口
插件开发者可以实现 RuleTool 接口为自定义插件提供 AI Rules:
type RuleTool interface {
Tool
Rules() []Rule
}
type Rule struct {
Name string // 规则文件名(不含扩展名)
Description string // 简短描述
Globs []string // 文件匹配模式
AlwaysApply bool // 是否始终加载
Content string // 规则内容(Markdown)
}VSCode 插件增强
- 新增
devgen.generateRules命令,可在 IDE 中直接生成 AI Rules - 支持自动检测当前工作区并生成对应的规则文件
改进
Logger 增强
- 新增
Logger.Warnf()方法用于输出警告信息 - 新增
Logger.Debugf()方法用于输出调试信息 - 日志输出格式优化,支持颜色高亮
升级指南
从 v0.2.x 升级
直接升级即可,无破坏性变更:
go install github.com/tlipoca9/devgen/cmd/devgen@v0.3.0生成 AI Rules
升级后,运行以下命令生成 AI Rules:
devgen rules --agent codebuddy -w然后将生成的 .codebuddy/rules/ 目录提交到版本控制,让团队成员都能享受 AI 辅助编程的便利。
v0.2.3
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 生成代码。
v0.2.2
Release v0.2.2
发布日期: 2025-12-08
概述
v0.2.2 是一个功能增强版本,validategen 新增了 duration 验证注解系列,支持指针数值类型的比较验证,并将 @method 注解的验证逻辑从 VSCode 插件移至 CLI 工具。
新特性
validategen: Duration 验证注解
新增三个用于验证 time.Duration 字符串的注解:
@duration - 格式验证
验证字符串是有效的 Go duration 格式(如 1h30m、500ms):
// validategen:@validate
type Config struct {
// validategen:@duration
Timeout string // 必须是有效的 duration 格式
}@duration_min(duration) - 最小值验证
验证 duration 字符串的值不小于指定值:
// validategen:@validate
type Config struct {
// validategen:@duration_min(1s)
Timeout string // 超时时间至少 1 秒
// validategen:@duration_min(100ms)
RetryInterval string // 重试间隔至少 100 毫秒
}@duration_max(duration) - 最大值验证
验证 duration 字符串的值不大于指定值:
// validategen:@validate
type Config struct {
// validategen:@duration_max(1h)
Timeout string // 超时时间最多 1 小时
// validategen:@duration_max(30s)
RetryInterval string // 重试间隔最多 30 秒
}组合使用
三个注解可以组合使用,生成的代码会合并为一个代码块,只解析一次:
// validategen:@validate
type Config struct {
// validategen:@duration
// validategen:@duration_min(1s)
// validategen:@duration_max(1h)
RetryInterval string // 有效 duration,范围 1s ~ 1h
}生成的代码(优化后):
if x.RetryInterval != "" {
if _dur, _err := time.ParseDuration(x.RetryInterval); _err != nil {
errs = append(errs, fmt.Sprintf("RetryInterval must be a valid duration..."))
} else {
if _dur < 1000000000 {
errs = append(errs, fmt.Sprintf("RetryInterval must be at least 1s..."))
}
if _dur > 3600000000000 {
errs = append(errs, fmt.Sprintf("RetryInterval must be at most 1h..."))
}
}
}性能数据
| 注解 | Mean (1000次) | 单次约 |
|---|---|---|
@duration (valid) |
25.45µs | 25.45ns |
@duration (invalid) |
67.56µs | 67.56ns |
@duration_min |
11.78µs | 11.78ns |
@duration_max |
~11µs | ~11ns |
| 组合使用 | ~11µs | ~11ns |
validategen: 指针数值类型支持
@min、@max、@gt、@gte、@lt、@lte、@eq、@ne 等比较注解现在支持指针数值类型:
// validategen:@validate
type Config struct {
// validategen:@min(1)
// validategen:@max(65535)
Port *int // 可选端口,非 nil 时验证范围
// validategen:@gte(0)
Timeout *float64 // 可选超时,非 nil 时验证 >= 0
}生成的代码:
if x.Port != nil {
if *x.Port < 1 {
errs = append(errs, "Port must be at least 1...")
}
if *x.Port > 65535 {
errs = append(errs, "Port must be at most 65535...")
}
}validategen: @method 验证移至 CLI
@method 注解的参数验证从 VSCode 插件移至 CLI 工具,提供更准确的编译时检查:
- 验证方法是否存在于目标类型上
- 验证方法签名是否正确(无参数,返回
error) - 提供清晰的错误信息和位置
| 错误码 | 说明 |
|---|---|
| E010 | 方法不存在 |
| E011 | 方法签名不正确 |
文档更新
- README.md / README_EN.md 新增 duration 验证注解文档
- 更新注解速查表
- 添加 duration 基准测试结果
升级指南
从 v0.2.1 升级
直接升级即可,无破坏性变更:
go install github.com/tlipoca9/devgen/cmd/devgen@v0.2.2如果使用了 duration 验证,重新运行 devgen 生成代码。
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