🔒 ParseComposerAuditJSON
解析 composer audit --format=json 的 JSON 输出,返回结构化的 AuditInfoResult(安全漏洞公告列表)。
何时使用
当你已拿到 composer audit 的 JSON 输出,需要程序化遍历已知安全漏洞、按严重程度处理时使用。它是 GetAuditInfo 内部调用的解析器。
签名
go
func ParseComposerAuditJSON(output string) (*AuditInfoResult, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer audit --format=json 的原始输出 |
返回值
*AuditInfoResult:审计结果,Advisories为[]AuditAdvisoryInfo,Count自动设置为公告数。error:JSON 反序列化失败时返回错误(内部委托ParseAuditInfoResult)。
每个 AuditAdvisoryInfo 含 PackageName、Version、Title、Severity(critical/high/medium/low)、CVE、Link、ReportedAt。
示例
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),字段结构略有不同,请按需选用。