🧪 ValidateStructured
执行 composer validate 并将输出解析为结构化的 *ValidateResult,区分错误与警告列表。
何时使用
需要在程序中分别处理错误和警告(如上报到监控系统、按严重性过滤)时使用。相比 ValidateStrict 返回的原始字符串,结构化结果更易于自动化决策。
签名
go
func (c *Composer) ValidateStructured() (*ValidateResult, error)参数
该方法无参数。
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | *ValidateResult | 解析后的验证结果(执行出错时 Valid 置为 false) |
| 第二返回值 | error | 始终为 nil——验证失败信息已封装在结果中 |
ValidateResult 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
Valid | bool | 是否通过验证 |
Errors | []string | 错误信息列表 |
Warnings | []string | 警告信息列表 |
注意
该方法不会因验证失败而返回 error,必须通过检查 result.Valid 判断是否通过。
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatalf("初始化失败: %v", err)
}
result, _ := comp.ValidateStructured()
if !result.Valid {
for _, e := range result.Errors {
fmt.Println("错误:", e)
}
for _, w := range result.Warnings {
fmt.Println("警告:", w)
}
return
}
fmt.Println("composer.json 验证通过")
}进阶
- 底层解析函数
ParseValidateOutput(output string) *ValidateResult可独立解析任意composer validate文本。 - 需要严格模式输出请先用 ValidateStrict。
- 仅校验架构使用 ValidateSchema。