Skip to content

✅ ParseCheckOutput

解析 composer check 的文本输出,按行分类为消息/警告/错误,返回 *CheckResult

何时使用

当你已拿到 composer check 的输出(用于检查 composer.jsoncomposer.lock 是否同步等问题),需要程序化判断是否通过、收集告警详情时使用。它是 CheckStructured 内部调用的解析器。

签名

go
func ParseCheckOutput(output string) *CheckResult

参数

参数类型说明
outputstringcomposer check 的原始输出

返回值

  • *CheckResult:检查结果,Valid 默认 trueMessagesWarningsErrors[]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 仅在出现错误关键字或命令返回非零退出码时被置 falseCheckStructured 会把命令 error 也并入判定)。
  • 🚀 一步到位执行命令并解析用 CheckStructured();带选项执行用 CheckWithOptions(options)
  • 📝 注意 composer checkcomposer validate 不同:前者检查 json/lock 同步等,后者校验 schema。schema 校验见 ParseValidateOutput
  • 🔗 同系列诊断解析见 ParseDiagnoseOutputParseStatusOutput

基于 MIT 许可证发布