🛡️ CheckForSecurityVulnerabilities
检查当前项目依赖是否包含已知安全漏洞,等价于执行 composer audit 并自动分析输出。返回三值:原始输出、是否存在漏洞、错误。
何时使用
需要在 CI 或定时巡检中快速判断"当前依赖是否有漏洞"并据此触发告警时使用。相比 Audit 的纯文本输出,本方法直接给出布尔判定,便于条件分支。
签名
go
func (c *Composer) CheckForSecurityVulnerabilities() (string, bool, error)参数
该方法无参数。
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | string | composer audit 的原始输出 |
| 第二返回值 | bool | true 表示检测到漏洞 |
| 第三返回值 | error | 非漏洞类错误时返回;发现漏洞时为 nil |
实现细节
composer audit 在发现漏洞时会返回非零退出码。本方法通过分析输出文本(含 Found、vulnerability 等关键字)区分"预期的漏洞提示"与"真实执行错误",因此发现漏洞时不会返回 error。
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatalf("初始化失败: %v", err)
}
output, hasVuln, err := comp.CheckForSecurityVulnerabilities()
if err != nil {
log.Fatalf("安全检查失败: %v", err)
}
if hasVuln {
fmt.Println("⚠️ 发现安全漏洞:")
fmt.Println(output)
} else {
fmt.Println("未发现安全漏洞")
}
}进阶
- 需要结构化漏洞详情(包名、版本、严重性、链接)使用 AuditWithJSON。
- 仅判断是否存在漏洞使用 HasVulnerabilities。
- 获取高严重性漏洞列表使用 GetHighSeverityVulnerabilities。