📈 GetAuditInfo
执行安全审计并返回结构化的详细结果 *AuditInfoResult。等价于执行 composer audit --format=json 并解析为更细粒度的公告结构。
何时使用
当需要比 AuditWithJSON 更结构化、字段更规范的审计结果时使用。本方法对 Composer 发现漏洞时返回非零退出码的情况做了容错:只要标准输出非空,仍会尝试解析其中的 JSON。
签名
go
func (c *Composer) GetAuditInfo() (*AuditInfoResult, error)参数
该方法无参数。
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | *AuditInfoResult | 结构化审计结果,含公告列表与计数 |
| 第二返回值 | error | 执行或 JSON 解析失败时返回 |
AuditInfoResult 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
Advisories | []AuditAdvisoryInfo | 安全公告详情列表 |
Count | int | 公告数量(解析时自动填充) |
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() {
comp, err := composer.NewComposer("")
if err != nil {
log.Fatalf("初始化失败: %v", err)
}
result, err := comp.GetAuditInfo()
if err != nil {
log.Fatalf("安全审计失败: %v", err)
}
fmt.Printf("共 %d 条公告\n", result.Count)
for _, adv := range result.Advisories {
fmt.Printf("漏洞: %s (%s) - %s\n", adv.PackageName, adv.Severity, adv.Title)
fmt.Printf("详情: %s\n", adv.Link)
}
}进阶
- 带自定义选项的结构化版本:
GetAuditInfoWithOptions(options map[string]string),可在 JSON 输出基础上追加no-dev、locked等参数。 - 手动解析任意 audit JSON 输出:使用包级函数
ParseAuditInfoResult(output string)。 - 相关方法:AuditWithJSON、HasVulnerabilities、GetHighSeverityVulnerabilities。