🧩 AuditWithJSON
对当前项目的依赖执行安全审计,并将 JSON 输出解析为结构化的 *AuditResult。等价于执行 composer audit --format=json 并自动反序列化。
何时使用
当需要在程序中拿到漏洞的包名、版本、严重性、链接等结构化字段并做进一步处理(如过滤、告警、上报)时使用。这是其他多个方法(HasVulnerabilities、GetHighSeverityVulnerabilities、GetAbandonedPackages)的底层实现。
签名
go
func (c *Composer) AuditWithJSON() (*AuditResult, error)参数
该方法无参数。
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | *AuditResult | 解析后的审计结果,包含漏洞列表与计数 |
| 第二返回值 | error | 执行或 JSON 解析失败时返回 |
AuditResult 主要字段:
| 字段 | 类型 | 说明 |
|---|---|---|
Vulnerabilities | []Vulnerability | 漏洞详情列表 |
Found | int | 发现的漏洞数量 |
Abandoned | string | 关联的公告标识(可空) |
WithoutDev | bool | 是否排除了开发依赖 |
示例
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)。 - 链接方法:Audit、AuditWithFormat、HasVulnerabilities。