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  }