API 概述
CVSS Parser 提供了一套完整的 API 来处理 CVSS (通用漏洞评分系统) 向量。本文档涵盖了所有可用的包、类型和函数。
核心包
📦 cvss 包
核心计算和数据结构包,提供:
- Calculator - CVSS 评分计算器
- Cvss3x - CVSS 3.x 数据结构
- DistanceCalculator - 向量距离计算
- JSON 支持 - 序列化和反序列化
🔍 parser 包
向量解析包,提供:
- Cvss3xParser - CVSS 3.x 向量解析器
- 灵活的解析选项和错误处理
🎯 vector 包
向量接口和实现,提供:
- Vector 接口 - 统一的向量接口
- 基础、时间和环境指标的具体实现
快速开始
基本用法
go
import (
"github.com/scagogogo/cvss-parser/pkg/cvss"
"github.com/scagogogo/cvss-parser/pkg/parser"
)
// 解析向量
p := parser.NewCvss3xParser("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H")
vector, err := p.Parse()
// 计算评分
calculator := cvss.NewCalculator(vector)
score, err := calculator.Calculate()
高级功能
go
// 向量比较
distCalc := cvss.NewDistanceCalculator(vector1, vector2)
distance := distCalc.EuclideanDistance()
// JSON 序列化
jsonData, err := json.Marshal(vector)
API 设计原则
🎯 类型安全
所有 API 都使用强类型设计,在编译时捕获错误:
go
type Calculator interface {
Calculate() (float64, error)
GetSeverityRating(score float64) string
}
🔧 灵活配置
支持多种配置选项以适应不同需求:
go
// 严格模式解析
parser := parser.NewCvss3xParser(vectorStr)
parser.SetStrictMode(true)
// 容错模式解析
parser.SetStrictMode(false)
📊 丰富的错误信息
提供详细的错误信息帮助调试:
go
if err != nil {
switch e := err.(type) {
case *parser.ParseError:
fmt.Printf("解析错误: %s (位置: %d)", e.Message, e.Position)
case *cvss.CalculationError:
fmt.Printf("计算错误: %s", e.Message)
}
}
包依赖关系
mermaid
graph TD
A[应用程序] --> B[parser 包]
A --> C[cvss 包]
B --> D[vector 包]
C --> D
C --> E[JSON 支持]
性能特性
⚡ 高性能
- 零分配的解析器设计
- 优化的计算算法
- 内存友好的数据结构
📈 可扩展性
- 支持批量处理
- 并发安全的设计
- 可插拔的组件架构
版本兼容性
CVSS Parser 版本 | CVSS 规范支持 | Go 版本要求 |
---|---|---|
v1.x | CVSS 3.0, 3.1 | Go 1.19+ |
v2.x | CVSS 3.0, 3.1, 4.0 | Go 1.21+ |
最佳实践
🛡️ 错误处理
始终检查错误并提供适当的处理:
go
vector, err := parser.Parse()
if err != nil {
log.Printf("解析失败: %v", err)
return
}
🔄 资源管理
对于大量数据处理,考虑使用对象池:
go
var parserPool = sync.Pool{
New: func() interface{} {
return parser.NewCvss3xParser("")
},
}
📊 性能监控
使用内置的性能指标:
go
start := time.Now()
score, err := calculator.Calculate()
duration := time.Since(start)
log.Printf("计算耗时: %v", duration)
下一步
获取帮助
如果你在使用 API 时遇到问题: