Skip to content

🔒 ParseComposerAuditJSON

解析 composer audit --format=json 的 JSON 输出,返回结构化的 AuditInfoResult(安全漏洞公告列表)。

何时使用

当你已拿到 composer audit 的 JSON 输出,需要程序化遍历已知安全漏洞、按严重程度处理时使用。它是 GetAuditInfo 内部调用的解析器。

签名

go
func ParseComposerAuditJSON(output string) (*AuditInfoResult, error)

参数

参数类型说明
outputstringcomposer audit --format=json 的原始输出

返回值

  • *AuditInfoResult:审计结果,Advisories[]AuditAdvisoryInfoCount 自动设置为公告数。
  • error:JSON 反序列化失败时返回错误(内部委托 ParseAuditInfoResult)。

每个 AuditAdvisoryInfoPackageNameVersionTitleSeveritycritical/high/medium/low)、CVELinkReportedAt

示例

go
package main

import (
	"fmt"
	"log"

	"github.com/scagogogo/composer-skills/pkg/composer"
)

func main() {
	output := `{"advisories":[{"package":"monolog/monolog","version":"2.1.0","title":"RCE vulnerability","severity":"high","cve":"CVE-2022-1000"}]}`

	result, err := composer.ParseComposerAuditJSON(output)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("发现 %d 个安全漏洞\n", result.Count)
	for _, adv := range result.Advisories {
		fmt.Printf("  %s %s: %s (%s)\n", adv.PackageName, adv.Version, adv.Title, adv.Severity)
	}
}

进阶

  • 🔄 本函数等价于 ParseAuditInfoResult(output),会自动填充 Count
  • 🚀 一步到位执行命令并解析用 GetAuditInfo();带选项用 GetAuditInfoWithOptions(options)。注意:composer audit 发现漏洞时返回非零退出码但输出仍为有效 JSON,封装方法已处理。
  • ⚠️ 另有更简化的 AuditWithJSON() 返回 *AuditResult(定义于 audit.go),字段结构略有不同,请按需选用。

基于 MIT 许可证发布