diff --git a/cmd/vulnreport/main.go b/cmd/vulnreport/main.go
index 9649506..976b4f6 100644
--- a/cmd/vulnreport/main.go
+++ b/cmd/vulnreport/main.go
@@ -497,8 +497,8 @@
 		return nil, err
 	}
 	cleanup = func() {
-		os.Chdir(cwd)
-		os.RemoveAll(dir)
+		_ = os.RemoveAll(dir)
+		_ = os.Chdir(cwd)
 	}
 	if err := os.Chdir(dir); err != nil {
 		cleanup()
diff --git a/internal/cveclient/cveclient_test.go b/internal/cveclient/cveclient_test.go
index b637807..ca99478 100644
--- a/internal/cveclient/cveclient_test.go
+++ b/internal/cveclient/cveclient_test.go
@@ -90,7 +90,10 @@
 		}
 		checkHeaders(t, r)
 		w.WriteHeader(mockStatus)
-		w.Write(mr)
+		_, err := w.Write(mr)
+		if err != nil {
+			t.Errorf("could not write mock response body: %v", err)
+		}
 	}
 }
 
@@ -109,18 +112,21 @@
 		}
 		parsed, err := url.ParseQuery(r.URL.RawQuery)
 		if err != nil {
-			t.Fatalf("could not parse URL query: %v", err)
+			t.Errorf("could not parse URL query: %v", err)
 		}
 		var page int
 		if pages := parsed["page"]; len(pages) >= 1 {
 			page, err = strconv.Atoi(parsed["page"][0])
 			if err != nil {
-				t.Fatalf("could not parse page as int: %v", err)
+				t.Errorf("could not parse page as int: %v", err)
 			}
 		}
 		checkHeaders(t, r)
 		w.WriteHeader(http.StatusOK)
-		w.Write(mrs[page])
+		_, err = w.Write(mrs[page])
+		if err != nil {
+			t.Errorf("could not write mock response body: %v", err)
+		}
 	}
 }
 
diff --git a/internal/report/lint.go b/internal/report/lint.go
index 21769cf..f56afaf 100644
--- a/internal/report/lint.go
+++ b/internal/report/lint.go
@@ -365,7 +365,7 @@
 		*vp = v
 	}
 	for i, p := range r.Packages {
-		for j, _ := range p.Versions {
+		for j := range p.Versions {
 			fixVersion(&r.Packages[i].Versions[j].Introduced)
 			fixVersion(&r.Packages[i].Versions[j].Fixed)
 		}
diff --git a/internal/worker/log/gcpjson.go b/internal/worker/log/gcpjson.go
index c6d9810..da45595 100644
--- a/internal/worker/log/gcpjson.go
+++ b/internal/worker/log/gcpjson.go
@@ -56,7 +56,7 @@
 		fmt.Fprintf(h.w, ", %q: ", key)
 		switch {
 		case !l.HasValue():
-			io.WriteString(h.w, "null")
+			fmt.Fprint(h.w, "null")
 		case l.IsInt64():
 			fmt.Fprintf(h.w, "%d", l.Int64())
 		case l.IsUint64():
@@ -74,13 +74,13 @@
 		first := true
 		for k, v := range gcpLabels {
 			if !first {
-				io.WriteString(h.w, ", ")
+				fmt.Fprint(h.w, ", ")
 			}
 			first = false
 			fmt.Fprintf(h.w, "%q: %q", k, v)
 		}
-		io.WriteString(h.w, "}")
+		fmt.Fprint(h.w, "}")
 	}
-	io.WriteString(h.w, "}\n")
+	fmt.Fprint(h.w, "}\n")
 	return ctx
 }
diff --git a/internal/worker/scan_modules.go b/internal/worker/scan_modules.go
index a8337ba..cc897a1 100644
--- a/internal/worker/scan_modules.go
+++ b/internal/worker/scan_modules.go
@@ -200,7 +200,9 @@
 			return fmt.Errorf("%s is an illegal filepath", fpath)
 		}
 		if f.FileInfo().IsDir() {
-			os.MkdirAll(fpath, os.ModePerm)
+			if err := os.MkdirAll(fpath, os.ModePerm); err != nil {
+				return err
+			}
 			continue
 		}
 		if err := os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
