Skip to content

🧩 AuditWithJSON

对当前项目的依赖执行安全审计,并将 JSON 输出解析为结构化的 *AuditResult。等价于执行 composer audit --format=json 并自动反序列化。

何时使用

当需要在程序中拿到漏洞的包名、版本、严重性、链接等结构化字段并做进一步处理(如过滤、告警、上报)时使用。这是其他多个方法(HasVulnerabilitiesGetHighSeverityVulnerabilitiesGetAbandonedPackages)的底层实现。

签名

go
func (c *Composer) AuditWithJSON() (*AuditResult, error)

参数

该方法无参数。

返回值

返回值类型说明
第一返回值*AuditResult解析后的审计结果,包含漏洞列表与计数
第二返回值error执行或 JSON 解析失败时返回

AuditResult 主要字段:

字段类型说明
Vulnerabilities[]Vulnerability漏洞详情列表
Foundint发现的漏洞数量
Abandonedstring关联的公告标识(可空)
WithoutDevbool是否排除了开发依赖

示例

go
package main

import (
	"fmt"
	"log"

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

func main() {
	comp, err := composer.NewComposer("")
	if err != nil {
		log.Fatalf("初始化失败: %v", err)
	}

	result, err := comp.AuditWithJSON()
	if err != nil {
		log.Fatalf("执行安全审计失败: %v", err)
	}

	fmt.Printf("发现 %d 个漏洞\n", result.Found)
	for _, vuln := range result.Vulnerabilities {
		fmt.Printf("包: %s %s\n", vuln.Package, vuln.Version)
		fmt.Printf("漏洞: %s\n", vuln.Title)
		fmt.Printf("严重性: %s\n", vuln.Severity)
		fmt.Printf("详情: %s\n\n", vuln.Link)
	}
}

进阶

  • 若需要更细粒度的公告信息(含 reportedAt 等),可使用 GetAuditInfo,它返回 *AuditInfoResult
  • 自定义审计选项的 JSON 版本可使用 GetAuditInfoWithOptions(options)
  • 链接方法:AuditAuditWithFormatHasVulnerabilities

基于 MIT 许可证发布