package format
import (
"fmt"
"github.com/xmirrorsecurity/opensca-cli/v3/cmd/detail"
)
func Statis(report Report) (string, string) {
depStatic := map[int]int{
0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0,
}
vulStatic := map[int]int{
0: 0, 1: 0, 2: 0, 3: 0, 4: 0,
}
vulSet := map[string]bool{}
report.DepDetailGraph.ForEach(func(n *detail.DepDetailGraph) bool {
if n.Name == "" {
return true
}
risk := 5
for _, v := range n.Vulnerabilities {
if !vulSet[v.Id] {
vulSet[v.Id] = true
if v.SecurityLevelId > 0 {
vulStatic[v.SecurityLevelId]++
}
vulStatic[0]++
}
if v.SecurityLevelId < risk {
risk = v.SecurityLevelId
}
}
if risk > 0 {
depStatic[risk]++
}
depStatic[0]++
return true
})
if vulStatic[0] != 0 {
return fmt.Sprintf("Components:%d C:%d H:%d M:%d L:%d",
depStatic[0], depStatic[1], depStatic[2], depStatic[3], depStatic[4]),
fmt.Sprintf("\nVulnerabilities:%d C:%d H:%d M:%d L:%d",
vulStatic[0], vulStatic[1], vulStatic[2], vulStatic[3], vulStatic[4])
}
return fmt.Sprintf("Components: %d", depStatic[0]), ""
}