Skip to content

Commit 01d0255

Browse files
authored
Merge pull request #1119 from SergeyKanzhelev/errcheck
enabled and fixed the errcheck linter rule
2 parents ae423ba + 0ce333b commit 01d0255

File tree

27 files changed

+315
-106
lines changed

27 files changed

+315
-106
lines changed

.golangci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ linters:
99
- ineffassign
1010
- unused
1111
- govet
12-
#- errcheck
12+
- errcheck
1313
- staticcheck
1414
exclusions:
1515
generated: lax

cmd/healthchecker/health_checker.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,18 @@ func main() {
3939
}
4040
})
4141
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
42-
pflag.CommandLine.MarkHidden("vmodule")
43-
pflag.CommandLine.MarkHidden("logtostderr")
42+
if err := pflag.CommandLine.MarkHidden("vmodule"); err != nil {
43+
klog.Fatalf("Failed to mark hidden flag 'vmodule': %v", err)
44+
}
45+
if err := pflag.CommandLine.MarkHidden("logtostderr"); err != nil {
46+
klog.Fatalf("Failed to mark hidden flag 'logtostderr': %v", err)
47+
}
4448

4549
hco := options.NewHealthCheckerOptions()
46-
hco.AddFlags(pflag.CommandLine)
50+
if err := hco.AddFlags(pflag.CommandLine); err != nil {
51+
fmt.Println(err)
52+
os.Exit(int(types.Unknown))
53+
}
4754
pflag.Parse()
4855
hco.SetDefaults()
4956
if err := hco.IsValid(); err != nil {

cmd/healthchecker/options/options.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,14 @@ type HealthCheckerOptions struct {
4747
}
4848

4949
// AddFlags adds health checker command line options to pflag.
50-
func (hco *HealthCheckerOptions) AddFlags(fs *pflag.FlagSet) {
50+
func (hco *HealthCheckerOptions) AddFlags(fs *pflag.FlagSet) error {
5151
fs.StringVar(&hco.Component, "component", types.KubeletComponent,
5252
"The component to check health for. Supports kubelet, docker, kube-proxy, and cri")
5353
// Deprecated: For backward compatibility on linux environment. Going forward "service" will be used instead of systemd-service
5454
if runtime.GOOS == "linux" {
55-
fs.MarkDeprecated("systemd-service", "please use --service flag instead")
55+
if err := fs.MarkDeprecated("systemd-service", "please use --service flag instead"); err != nil {
56+
return fmt.Errorf("failed to mark deprecated flag 'systemd-service': %w", err)
57+
}
5658
fs.StringVar(&hco.Service, "systemd-service", "",
5759
"The underlying service responsible for the component. Set to the corresponding component for docker and kubelet, containerd for cri.")
5860
}
@@ -73,6 +75,7 @@ func (hco *HealthCheckerOptions) AddFlags(fs *pflag.FlagSet) {
7375
"The time to wait before marking the component as unhealthy.")
7476
fs.Var(&hco.LogPatterns, "log-pattern",
7577
"The log pattern to look for in service journald logs. The format for flag value <failureThresholdCount>:<logPattern>")
78+
return nil
7679
}
7780

7881
// IsValid validates health checker command line options.

cmd/nodeproblemdetector/node_problem_detector_test.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,9 @@ func writeTempFile(t *testing.T, ext string, contents string) (string, error) {
9696
fileName := f.Name()
9797

9898
if err := os.WriteFile(fileName, []byte(contents), 0o644); err != nil {
99-
os.Remove(fileName)
99+
if err := os.Remove(fileName); err != nil {
100+
t.Logf("Failed to remove temporary file %s: %v", fileName, err)
101+
}
100102
return "", fmt.Errorf("cannot write config to temp file %s, %v", fileName, err)
101103
}
102104

@@ -106,16 +108,22 @@ func writeTempFile(t *testing.T, ext string, contents string) (string, error) {
106108
func setupNPD(t *testing.T) (*options.NodeProblemDetectorOptions, func()) {
107109
fakeLogFileName, err := writeTempFile(t, "log", "")
108110
if err != nil {
109-
os.Remove(fakeLogFileName)
111+
if err := os.Remove(fakeLogFileName); err != nil {
112+
t.Logf("Failed to remove temporary file %s: %v", fakeLogFileName, err)
113+
}
110114
t.Fatalf("cannot create temp config file, %v", err)
111115
}
112116

113117
fakeConfigFileContents := fmt.Sprintf(fakeConfigFilePattern, strings.ReplaceAll(fakeLogFileName, "\\", "\\\\"))
114118

115119
fakeConfigFileName, err := writeTempFile(t, "json", fakeConfigFileContents)
116120
if err != nil {
117-
os.Remove(fakeLogFileName)
118-
os.Remove(fakeConfigFileName)
121+
if err := os.Remove(fakeLogFileName); err != nil {
122+
t.Logf("Failed to remove temporary file %s: %v", fakeLogFileName, err)
123+
}
124+
if err := os.Remove(fakeConfigFileName); err != nil {
125+
t.Logf("Failed to remove temporary file %s: %v", fakeConfigFileName, err)
126+
}
119127
t.Fatalf("cannot create temp config file, %v", err)
120128
}
121129

@@ -126,7 +134,11 @@ func setupNPD(t *testing.T) (*options.NodeProblemDetectorOptions, func()) {
126134
},
127135
},
128136
}, func() {
129-
os.Remove(fakeLogFileName)
130-
os.Remove(fakeConfigFileName)
137+
if err := os.Remove(fakeLogFileName); err != nil {
138+
t.Logf("Failed to remove temporary file %s: %v", fakeLogFileName, err)
139+
}
140+
if err := os.Remove(fakeConfigFileName); err != nil {
141+
t.Logf("Failed to remove temporary file %s: %v", fakeConfigFileName, err)
142+
}
131143
}
132144
}

cmd/nodeproblemdetector/node_problem_detector_unix.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,17 @@ func main() {
3838
}
3939
})
4040
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
41-
pflag.CommandLine.MarkHidden("vmodule")
42-
pflag.CommandLine.MarkHidden("logtostderr")
41+
if err := pflag.CommandLine.MarkHidden("vmodule"); err != nil {
42+
klog.Fatalf("Failed to mark hidden flag 'vmodule': %v", err)
43+
}
44+
if err := pflag.CommandLine.MarkHidden("logtostderr"); err != nil {
45+
klog.Fatalf("Failed to mark hidden flag 'logtostderr': %v", err)
46+
}
4347

4448
npdo := options.NewNodeProblemDetectorOptions()
45-
npdo.AddFlags(pflag.CommandLine)
49+
if err := npdo.AddFlags(pflag.CommandLine); err != nil {
50+
klog.Fatalf("Failed to add flags: %v", err)
51+
}
4652

4753
pflag.Parse()
4854
if err := npdMain(context.Background(), npdo); err != nil {

cmd/nodeproblemdetector/node_problem_detector_windows.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,17 @@ func main() {
5353
}
5454
})
5555
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
56-
pflag.CommandLine.MarkHidden("vmodule")
57-
pflag.CommandLine.MarkHidden("logtostderr")
56+
if err := pflag.CommandLine.MarkHidden("vmodule"); err != nil {
57+
klog.Fatalf("Failed to mark hidden flag 'vmodule': %v", err)
58+
}
59+
if err := pflag.CommandLine.MarkHidden("logtostderr"); err != nil {
60+
klog.Fatalf("Failed to mark hidden flag 'logtostderr': %v", err)
61+
}
5862

5963
npdo := options.NewNodeProblemDetectorOptions()
60-
npdo.AddFlags(pflag.CommandLine)
64+
if err := npdo.AddFlags(pflag.CommandLine); err != nil {
65+
klog.Fatalf("Failed to add flags: %v", err)
66+
}
6167

6268
pflag.Parse()
6369

cmd/options/options.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,17 @@ func NewNodeProblemDetectorOptions() *NodeProblemDetectorOptions {
106106
}
107107

108108
// AddFlags adds node problem detector command line options to pflag.
109-
func (npdo *NodeProblemDetectorOptions) AddFlags(fs *pflag.FlagSet) {
109+
func (npdo *NodeProblemDetectorOptions) AddFlags(fs *pflag.FlagSet) error {
110110
fs.StringSliceVar(&npdo.SystemLogMonitorConfigPaths, "system-log-monitors",
111111
[]string{}, "List of paths to system log monitor config files, comma separated.")
112-
fs.MarkDeprecated("system-log-monitors", "replaced by --config.system-log-monitor. NPD will panic if both --system-log-monitors and --config.system-log-monitor are set.")
112+
if err := fs.MarkDeprecated("system-log-monitors", "replaced by --config.system-log-monitor. NPD will panic if both --system-log-monitors and --config.system-log-monitor are set."); err != nil {
113+
return fmt.Errorf("failed to mark 'system-log-monitors' as deprecated: %w", err)
114+
}
113115
fs.StringSliceVar(&npdo.CustomPluginMonitorConfigPaths, "custom-plugin-monitors",
114116
[]string{}, "List of paths to custom plugin monitor config files, comma separated.")
115-
fs.MarkDeprecated("custom-plugin-monitors", "replaced by --config.custom-plugin-monitor. NPD will panic if both --custom-plugin-monitors and --config.custom-plugin-monitor are set.")
117+
if err := fs.MarkDeprecated("custom-plugin-monitors", "replaced by --config.custom-plugin-monitor. NPD will panic if both --custom-plugin-monitors and --config.custom-plugin-monitor are set."); err != nil {
118+
return fmt.Errorf("failed to mark 'custom-plugin-monitors' as deprecated: %w", err)
119+
}
116120
fs.BoolVar(&npdo.EnableK8sExporter, "enable-k8s-exporter", true, "Enables reporting to Kubernetes API server.")
117121
fs.StringVar(&npdo.EventNamespace, "event-namespace", "", "Namespace for recorded Kubernetes events.")
118122
fs.StringVar(&npdo.ApiServerOverride, "apiserver-override",
@@ -149,6 +153,7 @@ func (npdo *NodeProblemDetectorOptions) AddFlags(fs *pflag.FlagSet) {
149153
problemDaemonName,
150154
problemdaemon.GetProblemDaemonHandlerOrDie(problemDaemonName).CmdOptionDescription))
151155
}
156+
return nil
152157
}
153158

154159
// ValidOrDie validates node problem detector command line options.

pkg/custompluginmonitor/plugin/plugin_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ func TestNewPluginRun(t *testing.T) {
103103
utMeta := v
104104
t.Run(desp, func(t *testing.T) {
105105
conf := cpmtypes.CustomPluginConfig{}
106-
(&conf).ApplyConfiguration()
106+
if err := (&conf).ApplyConfiguration(); err != nil {
107+
t.Errorf("Failed to apply configuration: %v", err)
108+
}
107109
p := Plugin{config: conf}
108110
gotExitStatus, gotOutput := p.run(utMeta.Rule)
109111
// cut at position max_output_length if expected output is longer than max_output_length bytes

pkg/custompluginmonitor/types/config_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,9 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
219219
}
220220

221221
for desp, utMeta := range utMetas {
222-
(&utMeta.Orig).ApplyConfiguration()
222+
if err := (&utMeta.Orig).ApplyConfiguration(); err != nil {
223+
t.Errorf("Error in apply configuration for %q: %v", desp, err)
224+
}
223225
if !reflect.DeepEqual(utMeta.Orig, utMeta.Wanted) {
224226
t.Errorf("Error in apply configuration for %q", desp)
225227
t.Errorf("Wanted: %+v. \nGot: %+v", utMeta.Wanted, utMeta.Orig)

pkg/exporters/k8sexporter/k8s_exporter.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ func (ke *k8sExporter) startHTTPReporting(npdo *options.NodeProblemDetectorOptio
9494
// logic in the future.
9595
mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
9696
w.WriteHeader(http.StatusOK)
97-
w.Write([]byte("ok"))
97+
if _, err := w.Write([]byte("ok")); err != nil {
98+
klog.Errorf("Failed to write response: %v", err)
99+
}
98100
})
99101

100102
// Add the handler to serve condition http request.

0 commit comments

Comments
 (0)