diff --git a/Makefile b/Makefile index 5fcdfc66..44a489c4 100644 --- a/Makefile +++ b/Makefile @@ -151,7 +151,7 @@ modernize: go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... .PHONY: check -check: check_format check_vet check_static check_license check_lint check_vuln check_modernize test +check: check_format check_vet check_static check_license check_lint check_vuln test .PHONY: sweep sweep: diff --git a/cmd/config/config_tables.go b/cmd/config/config_tables.go index 37831418..f3b73b84 100644 --- a/cmd/config/config_tables.go +++ b/cmd/config/config_tables.go @@ -226,10 +226,10 @@ func configurationTableTextRenderer(tableValues table.TableValues) string { value = field.Values[0] } // Format: "Field Name: Value Description" - sb.WriteString(fmt.Sprintf("%-*s %-*s %s\n", + fmt.Fprintf(&sb, "%-*s %-*s %s\n", maxFieldNameLen+1, field.Name+":", maxValueLen, value, - field.Description)) + field.Description) } return sb.String() diff --git a/cmd/config/restore.go b/cmd/config/restore.go index f31d2b8f..1a7942ff 100644 --- a/cmd/config/restore.go +++ b/cmd/config/restore.go @@ -380,8 +380,8 @@ func parseNumericWithUnit(value string, units ...string) (string, error) { // try to remove each unit suffix for _, unit := range units { - if strings.HasSuffix(value, unit) { - numStr := strings.TrimSuffix(value, unit) + if before, ok := strings.CutSuffix(value, unit); ok { + numStr := before // validate it's a valid number if _, err := strconv.ParseFloat(numStr, 64); err != nil { return "", fmt.Errorf("invalid numeric value: %s", value) diff --git a/cmd/config/set.go b/cmd/config/set.go index 44034761..b3b374c7 100644 --- a/cmd/config/set.go +++ b/cmd/config/set.go @@ -903,14 +903,15 @@ fi default: return fmt.Errorf("invalid C6 setting: %s", enableDisable) } - bash := "for cpu in /sys/devices/system/cpu/cpu[0-9]*; do\n" + var bash strings.Builder + bash.WriteString("for cpu in /sys/devices/system/cpu/cpu[0-9]*; do\n") for _, folder := range c6StateFolders { - bash += fmt.Sprintf(" echo %d > $cpu/cpuidle/%s/disable\n", enableDisableValue, folder) + fmt.Fprintf(&bash, " echo %d > $cpu/cpuidle/%s/disable\n", enableDisableValue, folder) } - bash += "done\n" + bash.WriteString("done\n") setScript := script.ScriptDefinition{ Name: "configure c6", - ScriptTemplate: bash, + ScriptTemplate: bash.String(), Superuser: true, } _, err = runScript(myTarget, setScript, localTempDir) diff --git a/cmd/flame/flame_tables.go b/cmd/flame/flame_tables.go index 6e254b95..4b58a23e 100644 --- a/cmd/flame/flame_tables.go +++ b/cmd/flame/flame_tables.go @@ -206,7 +206,7 @@ func (p *ProcessStacks) dumpFolded() (folded string) { var sb strings.Builder for processName, stacks := range *p { for stack, stackCount := range stacks { - sb.WriteString(fmt.Sprintf("%s;%s %d\n", processName, stack, stackCount)) + fmt.Fprintf(&sb, "%s;%s %d\n", processName, stack, stackCount) } } folded = sb.String() diff --git a/cmd/metrics/perf_mux.go b/cmd/metrics/perf_mux.go index a70eda84..be06f186 100644 --- a/cmd/metrics/perf_mux.go +++ b/cmd/metrics/perf_mux.go @@ -36,11 +36,11 @@ func GetMuxIntervals(myTarget target.Target, localTempDir string) (intervals map // SetMuxIntervals - write the given intervals (values in ms) to the given sysfs device file names (key) func SetMuxIntervals(myTarget target.Target, intervals map[string]int, localTempDir string) (err error) { - var bash string + var bash strings.Builder for device := range intervals { - bash += fmt.Sprintf("echo %d > %s; ", intervals[device], device) + fmt.Fprintf(&bash, "echo %d > %s; ", intervals[device], device) } - _, err = common.RunScript(myTarget, script.ScriptDefinition{Name: "set mux intervals", ScriptTemplate: bash, Superuser: true}, localTempDir, flagNoRoot) + _, err = common.RunScript(myTarget, script.ScriptDefinition{Name: "set mux intervals", ScriptTemplate: bash.String(), Superuser: true}, localTempDir, flagNoRoot) return } diff --git a/cmd/telemetry/telemetry_tables.go b/cmd/telemetry/telemetry_tables.go index f7fcef08..f718485e 100644 --- a/cmd/telemetry/telemetry_tables.go +++ b/cmd/telemetry/telemetry_tables.go @@ -873,7 +873,7 @@ func irqRateTelemetryTableHTMLRenderer(tableValues table.TableValues, targetName // - one scatter chart per drive, showing the drive's utilization over time // - each drive stat is a separate dataset within the chart func driveTelemetryTableHTMLRenderer(tableValues table.TableValues, targetName string) string { - var out string + var out strings.Builder driveStats := make(map[string][][]string) for i := range tableValues.Fields[0].Values { drive := tableValues.Fields[1].Values[i] @@ -922,16 +922,16 @@ func driveTelemetryTableHTMLRenderer(tableValues table.TableValues, targetName s SuggestedMin: "0", SuggestedMax: "0", } - out += telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil) + out.WriteString(telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)) } - return out + return out.String() } // networkTelemetryTableHTMLRenderer renders charts of network device statistics // - one scatter chart per network device, showing the device's utilization over time // - each network stat is a separate dataset within the chart func networkTelemetryTableHTMLRenderer(tableValues table.TableValues, targetName string) string { - var out string + var out strings.Builder nicStats := make(map[string][][]string) for i := range tableValues.Fields[0].Values { drive := tableValues.Fields[1].Values[i] @@ -980,9 +980,9 @@ func networkTelemetryTableHTMLRenderer(tableValues table.TableValues, targetName SuggestedMin: "0", SuggestedMax: "0", } - out += telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil) + out.WriteString(telemetryTableHTMLRenderer(tableValues, data, datasetNames, chartConfig, nil)) } - return out + return out.String() } func memoryTelemetryTableHTMLRenderer(tableValues table.TableValues, targetName string) string { diff --git a/internal/report/render_html.go b/internal/report/render_html.go index 044ed814..31407c23 100644 --- a/internal/report/render_html.go +++ b/internal/report/render_html.go @@ -218,7 +218,7 @@ func getHtmlReportMenu(allTableValues []table.TableValues) string { // insert menu items into sidebar for _, tableValues := range allTableValues { if tableValues.MenuLabel != "" { - sb.WriteString(fmt.Sprintf("%s\n", html.EscapeString(tableValues.Name), html.EscapeString(tableValues.MenuLabel))) + fmt.Fprintf(&sb, "%s\n", html.EscapeString(tableValues.Name), html.EscapeString(tableValues.MenuLabel)) } } sb.WriteString("\n") // end of sidebar @@ -273,7 +273,7 @@ func createHtmlReport(allTableValues []table.TableValues, targetName string) (ou `) for _, tableValues := range allTableValues { // print the table name - sb.WriteString(fmt.Sprintf("
" + NoDataFound + "
\n") @@ -363,7 +363,7 @@ func createHtmlReportMultiTarget(allTargetsTableValues [][]table.TableValues, ta } // print the multi-target table, if any if len(oneTableValuesForAllTargets) > 0 { - sb.WriteString(fmt.Sprintf("