Skip to content

Commit 8ed7549

Browse files
authored
address issues raised by golangci-lint (#88)
1 parent 91707b0 commit 8ed7549

File tree

13 files changed

+197
-123
lines changed

13 files changed

+197
-123
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
/tools/bin
66
/dist
77
/internal/script/resources/x86_64
8+
/test

Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,14 @@ check_license:
9696
if ! grep -E 'Copyright \(C\) [0-9]{4}-[0-9]{4} Intel Corporation' "$$f" >/dev/null; then echo "Error: license not found: $$f"; fail=1; fi; \
9797
done; if [ -n "$$fail" ]; then exit 1; fi
9898

99+
.PHONY: check_lint
100+
check_lint:
101+
@echo "Running golangci-lint..."
102+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
103+
golangci-lint run
104+
99105
.PHONY: check
100-
check: check_format check_vet check_static check_license
106+
check: check_format check_vet check_static check_license check_lint
101107

102108
.PHONY: clean
103109
clean:

cmd/config/config.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,13 @@ func runCmd(cmd *cobra.Command, args []string) error {
232232
cmd.SilenceUsage = true
233233
return err
234234
}
235-
defer myTarget.RemoveDirectory(targetTempDir)
235+
defer func() {
236+
err = myTarget.RemoveDirectory(targetTempDir)
237+
if err != nil {
238+
fmt.Fprintf(os.Stderr, "Failed to remove target directory: %+v\n", err)
239+
slog.Error(err.Error())
240+
}
241+
}()
236242
}
237243
// print config prior to changes
238244
if err := printConfig(myTargets, localTempDir); err != nil {
@@ -310,18 +316,22 @@ func printConfig(myTargets []target.Target, localTempDir string) (err error) {
310316
}
311317
for _, myTarget := range myTargets {
312318
multiSpinner := progress.NewMultiSpinner()
313-
multiSpinner.AddSpinner(myTarget.GetName())
319+
err = multiSpinner.AddSpinner(myTarget.GetName())
320+
if err != nil {
321+
err = fmt.Errorf("failed to add spinner: %v", err)
322+
return
323+
}
314324
multiSpinner.Start()
315-
multiSpinner.Status(myTarget.GetName(), "collecting data")
325+
_ = multiSpinner.Status(myTarget.GetName(), "collecting data")
316326
// run the scripts
317327
var scriptOutputs map[string]script.ScriptOutput
318328
if scriptOutputs, err = script.RunScripts(myTarget, scriptsToRun, true, localTempDir); err != nil {
319329
err = fmt.Errorf("failed to run collection scripts: %v", err)
320-
multiSpinner.Status(myTarget.GetName(), "error collecting data")
330+
_ = multiSpinner.Status(myTarget.GetName(), "error collecting data")
321331
multiSpinner.Finish()
322332
return
323333
}
324-
multiSpinner.Status(myTarget.GetName(), "collection complete")
334+
_ = multiSpinner.Status(myTarget.GetName(), "collection complete")
325335
multiSpinner.Finish()
326336
// process the tables, i.e., get field values from raw script output
327337
tableNames := []string{report.ConfigurationTableName}

cmd/metrics/metrics.go

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ func runCmd(cmd *cobra.Command, args []string) error {
671671
} else {
672672
finalMessage += fmt.Sprintf(" for %d seconds", flagDuration)
673673
}
674-
multiSpinner.Status(targetContexts[i].target.GetName(), finalMessage)
674+
_ = multiSpinner.Status(targetContexts[i].target.GetName(), finalMessage)
675675
}
676676
go collectOnTarget(&targetContexts[i], localTempDir, localOutputDir, channelTargetError, multiSpinner.Status)
677677
}
@@ -687,7 +687,7 @@ func runCmd(cmd *cobra.Command, args []string) error {
687687
// finalize and stop the spinner
688688
for _, targetContext := range targetContexts {
689689
if targetContext.err == nil {
690-
multiSpinner.Status(targetContext.target.GetName(), "collection complete")
690+
_ = multiSpinner.Status(targetContext.target.GetName(), "collection complete")
691691
}
692692
}
693693
// summarize outputs
@@ -750,11 +750,11 @@ func runCmd(cmd *cobra.Command, args []string) error {
750750

751751
func prepareTarget(targetContext *targetContext, targetTempRoot string, localTempDir string, localPerfPath string, channelError chan targetError, statusUpdate progress.MultiSpinnerUpdateFunc) {
752752
myTarget := targetContext.target
753-
// create a temporary directory on the target
754-
statusUpdate(myTarget.GetName(), "configuring target")
755753
var err error
754+
// create a temporary directory on the target
755+
_ = statusUpdate(myTarget.GetName(), "configuring target")
756756
if targetContext.tempDir, err = myTarget.CreateTempDirectory(targetTempRoot); err != nil {
757-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
757+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
758758
targetContext.err = err
759759
channelError <- targetError{target: myTarget, err: err}
760760
return
@@ -764,15 +764,15 @@ func prepareTarget(targetContext *targetContext, targetTempRoot string, localTem
764764
var nmiWatchdogEnabled bool
765765
if nmiWatchdogEnabled, err = NMIWatchdogEnabled(myTarget); err != nil {
766766
err = fmt.Errorf("failed to retrieve NMI watchdog status: %w", err)
767-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
767+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
768768
targetContext.err = err
769769
channelError <- targetError{target: myTarget, err: err}
770770
return
771771
}
772772
if nmiWatchdogEnabled {
773773
if err = DisableNMIWatchdog(myTarget, localTempDir); err != nil {
774774
err = fmt.Errorf("failed to disable NMI watchdog: %w", err)
775-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
775+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
776776
targetContext.err = err
777777
channelError <- targetError{target: myTarget, err: err}
778778
return
@@ -784,14 +784,14 @@ func prepareTarget(targetContext *targetContext, targetTempRoot string, localTem
784784
if !flagNoRoot {
785785
if targetContext.perfMuxIntervals, err = GetMuxIntervals(myTarget, localTempDir); err != nil {
786786
err = fmt.Errorf("failed to get perf mux intervals: %w", err)
787-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
787+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
788788
targetContext.err = err
789789
channelError <- targetError{target: myTarget, err: err}
790790
return
791791
}
792792
if err = SetAllMuxIntervals(myTarget, flagPerfMuxInterval, localTempDir); err != nil {
793793
err = fmt.Errorf("failed to set all perf mux intervals: %w", err)
794-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
794+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
795795
targetContext.err = err
796796
channelError <- targetError{target: myTarget, err: err}
797797
return
@@ -800,7 +800,7 @@ func prepareTarget(targetContext *targetContext, targetTempRoot string, localTem
800800
// get the full path to the perf binary
801801
if targetContext.perfPath, err = getPerfPath(myTarget, localPerfPath); err != nil {
802802
err = fmt.Errorf("failed to find perf: %w", err)
803-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
803+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
804804
targetContext.err = err
805805
channelError <- targetError{target: myTarget, err: err}
806806
return
@@ -816,11 +816,11 @@ func prepareMetrics(targetContext *targetContext, localTempDir string, channelEr
816816
return
817817
}
818818
// load metadata
819-
statusUpdate(myTarget.GetName(), "collecting metadata")
819+
_ = statusUpdate(myTarget.GetName(), "collecting metadata")
820820
var err error
821821
if targetContext.metadata, err = LoadMetadata(myTarget, flagNoRoot, targetContext.perfPath, localTempDir); err != nil {
822822
err = fmt.Errorf("failed to load metadata: %w", err)
823-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
823+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
824824
targetContext.err = err
825825
channelError <- targetError{target: myTarget, err: err}
826826
return
@@ -830,23 +830,23 @@ func prepareMetrics(targetContext *targetContext, localTempDir string, channelEr
830830
var uncollectableEvents []string
831831
if targetContext.groupDefinitions, uncollectableEvents, err = LoadEventGroups(flagEventFilePath, targetContext.metadata); err != nil {
832832
err = fmt.Errorf("failed to load event definitions: %w", err)
833-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
833+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
834834
targetContext.err = err
835835
channelError <- targetError{target: myTarget, err: err}
836836
return
837837
}
838838
// load metric definitions
839839
if targetContext.metricDefinitions, err = LoadMetricDefinitions(flagMetricFilePath, flagMetricsList, uncollectableEvents, targetContext.metadata); err != nil {
840840
err = fmt.Errorf("failed to load metric definitions: %w", err)
841-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
841+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
842842
targetContext.err = err
843843
channelError <- targetError{target: myTarget, err: err}
844844
return
845845
}
846846
// configure metrics
847847
if err = ConfigureMetrics(targetContext.metricDefinitions, GetEvaluatorFunctions(), targetContext.metadata); err != nil {
848848
err = fmt.Errorf("failed to configure metrics: %w", err)
849-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
849+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
850850
targetContext.err = err
851851
channelError <- targetError{target: myTarget, err: err}
852852
return
@@ -877,7 +877,7 @@ func collectOnTarget(targetContext *targetContext, localTempDir string, localOut
877877
// get the perf command
878878
if processes, perfCommand, err = getPerfCommand(myTarget, targetContext.perfPath, targetContext.groupDefinitions, localTempDir); err != nil {
879879
err = fmt.Errorf("failed to get perf command: %w", err)
880-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
880+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
881881
break
882882
}
883883
beginTimestamp := time.Now()
@@ -887,7 +887,7 @@ func collectOnTarget(targetContext *targetContext, localTempDir string, localOut
887887
if perfErr != nil {
888888
if !getSignalReceived() {
889889
err = perfErr
890-
statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
890+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %s", err.Error()))
891891
}
892892
break
893893
}
@@ -916,21 +916,33 @@ func printMetrics(frameChannel chan []MetricFrame, targetName string, outputDir
916916
var printedFiles []string
917917
// block until next set of metric frames arrives, will exit loop when channel is closed
918918
for metricFrames := range frameChannel {
919-
fileName := printMetricsTxt(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatTxt, !flagLive && util.StringInList(formatTxt, flagOutputFormat), outputDir)
920-
if fileName != "" {
919+
fileName, err := printMetricsTxt(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatTxt, !flagLive && util.StringInList(formatTxt, flagOutputFormat), outputDir)
920+
if err != nil {
921+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
922+
slog.Error(err.Error())
923+
} else if fileName != "" {
921924
printedFiles = util.UniqueAppend(printedFiles, fileName)
922925
}
923-
fileName = printMetricsJSON(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatJSON, !flagLive && util.StringInList(formatJSON, flagOutputFormat), outputDir)
924-
if fileName != "" {
926+
fileName, err = printMetricsJSON(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatJSON, !flagLive && util.StringInList(formatJSON, flagOutputFormat), outputDir)
927+
if err != nil {
928+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
929+
slog.Error(err.Error())
930+
} else if fileName != "" {
925931
printedFiles = util.UniqueAppend(printedFiles, fileName)
926932
}
927933
// csv is always written to file unless no files are requested -- we need it to create the summary reports
928-
fileName = printMetricsCSV(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatCSV, !flagLive, outputDir)
929-
if fileName != "" {
934+
fileName, err = printMetricsCSV(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatCSV, !flagLive, outputDir)
935+
if err != nil {
936+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
937+
slog.Error(err.Error())
938+
} else if fileName != "" {
930939
printedFiles = util.UniqueAppend(printedFiles, fileName)
931940
}
932-
fileName = printMetricsWide(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatWide, !flagLive && util.StringInList(formatWide, flagOutputFormat), outputDir)
933-
if fileName != "" {
941+
fileName, err = printMetricsWide(metricFrames, targetName, flagLive && flagOutputFormat[0] == formatWide, !flagLive && util.StringInList(formatWide, flagOutputFormat), outputDir)
942+
if err != nil {
943+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
944+
slog.Error(err.Error())
945+
} else if fileName != "" {
934946
printedFiles = util.UniqueAppend(printedFiles, fileName)
935947
}
936948
}
@@ -1170,7 +1182,11 @@ func runPerf(myTarget target.Target, noRoot bool, processes []Process, cmd *exec
11701182
outputLines = [][]byte{} // empty it
11711183
}
11721184
if timeout != 0 && int(time.Since(startPerfTimestamp).Seconds()) > timeout {
1173-
localCommand.Process.Signal(os.Interrupt)
1185+
err = localCommand.Process.Signal(os.Interrupt)
1186+
if err != nil {
1187+
err = fmt.Errorf("failed to terminate perf: %v", err)
1188+
slog.Error(err.Error())
1189+
}
11741190
}
11751191
}
11761192
}()

0 commit comments

Comments
 (0)