code-intelligence.com/cifuzz@v0.40.0/internal/cmd/run/reporthandler/metrics/metrics.go (about) 1 package metrics 2 3 import ( 4 "fmt" 5 "strconv" 6 "time" 7 8 "github.com/pterm/pterm" 9 10 "code-intelligence.com/cifuzz/pkg/report" 11 ) 12 13 type Printer interface { 14 PrintMetrics(metrics *report.FuzzingMetric) 15 } 16 17 func DescString(format string, a ...any) string { 18 return pterm.FgDefault.Sprintf(format, a...) 19 } 20 21 func NumberString(format string, a ...any) string { 22 return pterm.FgLightCyan.Sprintf(format, a...) 23 } 24 25 func DelimString(format string, a ...any) string { 26 return pterm.Fuzzy.Sprintf(format, a...) 27 } 28 29 func MetricsToString(metrics *report.FuzzingMetric) string { 30 var paths, lastNewPath, executionsPerSecond string 31 if metrics == nil { 32 paths = "0" 33 lastNewPath = "none yet" 34 executionsPerSecond = "n/a" 35 } else { 36 paths = strconv.FormatInt(int64(metrics.Features), 10) 37 lastNewPath = (time.Second * time.Duration(metrics.SecondsSinceLastFeature)).String() 38 executionsPerSecond = strconv.FormatInt(int64(metrics.ExecutionsPerSecond), 10) 39 } 40 41 return fmt.Sprint(DescString("paths: "), 42 NumberString("%s", paths), 43 DelimString(" - "), 44 DescString("last new path: "), 45 NumberString("%s", lastNewPath), 46 DelimString(" - "), 47 DescString("exec/s: "), 48 NumberString("%s", executionsPerSecond), 49 ) 50 }