✅ ParseCheckOutput
解析 composer check 的文本输出,按行分类为消息/警告/错误,返回 *CheckResult。
何时使用
当你已拿到 composer check 的输出(用于检查 composer.json 与 composer.lock 是否同步等问题),需要程序化判断是否通过、收集告警详情时使用。它是 CheckStructured 内部调用的解析器。
签名
go
func ParseCheckOutput(output string) *CheckResult参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer check 的原始输出 |
返回值
*CheckResult:检查结果,Valid默认true;Messages、Warnings、Errors为[]string。含error/Error/FAIL的行会置Valid=false并归入Errors;含warning/Warning/WARN的行归入Warnings;其余归入Messages。
示例
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.Fatal(err)
}
output, _ := comp.Run("check")
result := composer.ParseCheckOutput(output)
if result.Valid {
fmt.Println("✅ 检查通过")
} else {
fmt.Println("❌ 检查未通过")
for _, e := range result.Errors {
fmt.Println("错误:", e)
}
}
for _, w := range result.Warnings {
fmt.Println("警告:", w)
}
}进阶
- 🔍 解析逻辑基于关键字子串匹配(区分大小写两套),不依赖 JSON。
Valid仅在出现错误关键字或命令返回非零退出码时被置false(CheckStructured会把命令 error 也并入判定)。 - 🚀 一步到位执行命令并解析用
CheckStructured();带选项执行用CheckWithOptions(options)。 - 📝 注意
composer check与composer validate不同:前者检查 json/lock 同步等,后者校验 schema。schema 校验见ParseValidateOutput。 - 🔗 同系列诊断解析见
ParseDiagnoseOutput、ParseStatusOutput。