From 0721b6fe005ad2b2f05915e9e25df2eb2b14416d Mon Sep 17 00:00:00 2001 From: "Harper, Jason M" Date: Fri, 12 Dec 2025 09:49:15 -0800 Subject: [PATCH 1/2] Catch up with latest 'go modernize' suggestions Signed-off-by: Harper, Jason M --- cmd/config/config_tables.go | 4 ++-- cmd/config/restore.go | 4 ++-- cmd/config/set.go | 9 +++++---- cmd/flame/flame_tables.go | 2 +- cmd/metrics/perf_mux.go | 6 +++--- cmd/telemetry/telemetry_tables.go | 12 ++++++------ internal/report/render_html.go | 10 +++++----- internal/report/render_text.go | 14 +++++++------- 8 files changed, 31 insertions(+), 30 deletions(-) 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("

%[1]s

\n", html.EscapeString(tableValues.Name))) + fmt.Fprintf(&sb, "

%[1]s

\n", html.EscapeString(tableValues.Name)) // if there's no data in the table, print a message and continue if len(tableValues.Fields) == 0 || len(tableValues.Fields[0].Values) == 0 { msg := NoDataFound @@ -343,10 +343,10 @@ func createHtmlReportMultiTarget(allTargetsTableValues [][]table.TableValues, ta if targetTableValues.HasRows && getCustomHTMLMultiTargetRenderer(targetTableValues.Name) == nil { // print the table name only one time per table if targetIndex == 0 { - sb.WriteString(fmt.Sprintf("

%[1]s

\n", html.EscapeString(targetTableValues.Name))) + fmt.Fprintf(&sb, "

%[1]s

\n", html.EscapeString(targetTableValues.Name)) } // print the target name - sb.WriteString(fmt.Sprintf("

%s

\n", targetName)) + fmt.Fprintf(&sb, "

%s

\n", targetName) // if there's no data in the table, print a message and continue if len(targetTableValues.Fields) == 0 || len(targetTableValues.Fields[0].Values) == 0 { sb.WriteString("

" + 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("

%[1]s

\n", html.EscapeString(oneTableValuesForAllTargets[0].Name))) + fmt.Fprintf(&sb, "

%[1]s

\n", html.EscapeString(oneTableValuesForAllTargets[0].Name)) if renderer := getCustomHTMLMultiTargetRenderer(oneTableValuesForAllTargets[0].Name); renderer != nil { sb.WriteString(renderer(oneTableValuesForAllTargets, targetNames)) } else { diff --git a/internal/report/render_text.go b/internal/report/render_text.go index 07199446..fa2814f5 100644 --- a/internal/report/render_text.go +++ b/internal/report/render_text.go @@ -25,7 +25,7 @@ func RegisterTextRenderer(tableName string, renderer table.TextTableRenderer) { func createTextReport(allTableValues []table.TableValues) (out []byte, err error) { var sb strings.Builder for _, tableValues := range allTableValues { - sb.WriteString(fmt.Sprintf("%s\n", tableValues.Name)) + fmt.Fprintf(&sb, "%s\n", tableValues.Name) for range len(tableValues.Name) { sb.WriteString("=") } @@ -72,23 +72,23 @@ func DefaultTextTableRendererFunc(tableValues table.TableValues) string { columnSpacing := 3 // print the field names for _, field := range tableValues.Fields { - sb.WriteString(fmt.Sprintf("%-*s", maxFieldLen[field.Name]+columnSpacing, field.Name)) + fmt.Fprintf(&sb, "%-*s", maxFieldLen[field.Name]+columnSpacing, field.Name) } sb.WriteString("\n") // underline the field names for _, field := range tableValues.Fields { - underline := "" + var underline strings.Builder for range len(field.Name) { - underline += "-" + underline.WriteString("-") } - sb.WriteString(fmt.Sprintf("%-*s", maxFieldLen[field.Name]+columnSpacing, underline)) + fmt.Fprintf(&sb, "%-*s", maxFieldLen[field.Name]+columnSpacing, underline.String()) } sb.WriteString("\n") // print the rows numRows := len(tableValues.Fields[0].Values) for row := range numRows { for fieldIdx, field := range tableValues.Fields { - sb.WriteString(fmt.Sprintf("%-*s", maxFieldLen[field.Name]+columnSpacing, tableValues.Fields[fieldIdx].Values[row])) + fmt.Fprintf(&sb, "%-*s", maxFieldLen[field.Name]+columnSpacing, tableValues.Fields[fieldIdx].Values[row]) } sb.WriteString("\n") } @@ -106,7 +106,7 @@ func DefaultTextTableRendererFunc(tableValues table.TableValues) string { if len(field.Values) > 0 { value = field.Values[0] } - sb.WriteString(fmt.Sprintf("%s%-*s %s\n", field.Name, maxFieldNameLen-len(field.Name)+1, ":", value)) + fmt.Fprintf(&sb, "%s%-*s %s\n", field.Name, maxFieldNameLen-len(field.Name)+1, ":", value) } } return sb.String() From 66f401ceb3c5ba7c3e45392a845db9de6f1bb2f6 Mon Sep 17 00:00:00 2001 From: "Harper, Jason M" Date: Fri, 12 Dec 2025 09:50:27 -0800 Subject: [PATCH 2/2] remove modernize from list of required passing checkers Signed-off-by: Harper, Jason M --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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: