From ac2b8a0868c167ef9e79cd1cc96f8de282a14d4a Mon Sep 17 00:00:00 2001
From: Ash McKenzie <amckenzie@gitlab.com>
Date: Mon, 1 Jul 2024 07:47:02 +0000
Subject: [PATCH] Resolve unused-parameter: <specifics> (revive)

---
 .../lint_last_known_acceptable_go1.21.txt     | 56 -------------------
 .../lint_last_known_acceptable_go1.22.txt     | 56 -------------------
 .../gitlab-workhorse/authorization_test.go    |  2 +-
 workhorse/cmd/gitlab-workhorse/config_test.go |  2 +-
 workhorse/cmd/gitlab-workhorse/main_test.go   | 20 +++----
 workhorse/cmd/gitlab-workhorse/proxy_test.go  |  4 +-
 workhorse/internal/api/api_test.go            |  2 +-
 workhorse/internal/builds/register_test.go    |  2 +-
 .../dependencyproxy/dependencyproxy_test.go   | 18 +++---
 workhorse/internal/git/info-refs_test.go      |  2 +-
 workhorse/internal/git/io_test.go             |  4 +-
 workhorse/internal/git/upload-pack_test.go    |  4 +-
 workhorse/internal/queueing/requests_test.go  |  4 +-
 .../internal/rejectmethods/middleware_test.go |  2 +-
 workhorse/internal/sendurl/sendurl.go         |  2 +-
 workhorse/internal/sendurl/sendurl_test.go    |  2 +-
 .../internal/upload/artifacts_store_test.go   | 14 ++---
 .../internal/upload/artifacts_upload_test.go  |  4 +-
 .../internal/upload/body_uploader_test.go     |  4 +-
 .../destination/objectstore/object_test.go    |  2 +-
 .../destination/objectstore/test/s3_stub.go   |  2 +-
 workhorse/internal/upload/uploads_test.go     |  6 +-
 .../upstream/roundtripper/roundtripper.go     |  4 +-
 .../roundtripper/roundtripper_test.go         |  4 +-
 workhorse/internal/upstream/routes.go         |  2 +-
 25 files changed, 56 insertions(+), 168 deletions(-)

diff --git a/workhorse/_support/lint_last_known_acceptable_go1.21.txt b/workhorse/_support/lint_last_known_acceptable_go1.21.txt
index f47e272eea559..b593b2e75c995 100644
--- a/workhorse/_support/lint_last_known_acceptable_go1.21.txt
+++ b/workhorse/_support/lint_last_known_acceptable_go1.21.txt
@@ -2,9 +2,7 @@ cmd/gitlab-resize-image/main.go:1:1: package-comments: should have a package com
 cmd/gitlab-resize-image/png/reader.go:1:1: package-comments: should have a package comment (revive)
 cmd/gitlab-resize-image/png/reader.go:26:1: exported: exported function NewReader should have comment or be unexported (revive)
 cmd/gitlab-resize-image/png/reader.go:78:17: var-declaration: should omit type []byte from declaration of var magicBytes; it will be inferred from the right-hand side (revive)
-cmd/gitlab-workhorse/authorization_test.go:72:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/config_test.go:191: cmd/gitlab-workhorse/config_test.go:191: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO this is meant to be 50*time.Second ..." (godox)
-cmd/gitlab-workhorse/config_test.go:333:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/jobs_test.go:37:29: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/jobs_test.go:42:29: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/listener.go:34:16: G402: TLS MinVersion too low. (gosec)
@@ -25,7 +23,6 @@ cmd/gitlab-workhorse/main.go:240:26: Error return value of `accessCloser.Close`
 cmd/gitlab-workhorse/main.go:264:10: G112: Potential Slowloris Attack because ReadHeaderTimeout is not configured in the http.Server (gosec)
 cmd/gitlab-workhorse/main_test.go:60:2: exitAfterDefer: os.Exit will exit, and `defer gitaly.CloseConnections()` will not run (gocritic)
 cmd/gitlab-workhorse/main_test.go:107:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:132:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:143:24: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:156:66: wrapperFunc: use http.NotFoundHandler method in `http.HandlerFunc(http.NotFound)` (gocritic)
 cmd/gitlab-workhorse/main_test.go:163:23: response body must be closed (bodyclose)
@@ -33,19 +30,12 @@ cmd/gitlab-workhorse/main_test.go:186:24: response body must be closed (bodyclos
 cmd/gitlab-workhorse/main_test.go:212:25: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:243:23: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:246:25: unnecessary conversion (unconvert)
-cmd/gitlab-workhorse/main_test.go:263:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:315:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:369:41: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:416:38: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:431:38: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:445:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:450:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:455:61: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:457:3: bool-compare: use assert.True (testifylint)
 cmd/gitlab-workhorse/main_test.go:485:40: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:509:23: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:519:3: ifElseChain: rewrite if-else to switch statement (gocritic)
-cmd/gitlab-workhorse/main_test.go:565:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:575:21: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:578:3: var-naming: var requestIds should be requestIDs (revive)
 cmd/gitlab-workhorse/main_test.go:579:3: len: use require.Len (testifylint)
@@ -53,16 +43,12 @@ cmd/gitlab-workhorse/main_test.go:651:4: var-naming: var propagatedRequestId sho
 cmd/gitlab-workhorse/main_test.go:658:22: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:659:4: var-naming: var requestIds should be requestIDs (revive)
 cmd/gitlab-workhorse/main_test.go:662:4: len: use require.Len (testifylint)
-cmd/gitlab-workhorse/main_test.go:674:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:792:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:871:25: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:896:25: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:937:4: var-naming: var originResourceUrl should be originResourceURL (revive)
 cmd/gitlab-workhorse/proxy_test.go:55:9: shadow: declaration of "err" shadows declaration at line 36 (govet)
 cmd/gitlab-workhorse/proxy_test.go:77:6: var-naming: var tsUrl should be tsURL (revive)
 cmd/gitlab-workhorse/proxy_test.go:87:6: shadow: declaration of "err" shadows declaration at line 78 (govet)
-cmd/gitlab-workhorse/proxy_test.go:132:51: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/proxy_test.go:158:45: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/raven.go:17:14: Error return value of `raven.SetDSN` is not checked (errcheck)
 cmd/gitlab-workhorse/upload_test.go:372:4: require-error: for error assertions use require (testifylint)
 cmd/gitlab-workhorse/upload_test.go:377:4: require-error: for error assertions use require (testifylint)
@@ -81,7 +67,6 @@ cmd/gitlab-zip-metadata/main.go:66:9: superfluous-else: if block ends with call
 internal/api/api.go:146:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:149:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:153:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
-internal/api/api_test.go:182:49: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/api/block_test.go:61:34: response body must be closed (bodyclose)
 internal/api/channel_settings.go:57:28: G402: TLS MinVersion too low. (gosec)
 internal/api/channel_settings_test.go:125:22: SA1019: dialer.TLSClientConfig.RootCAs.Subjects has been deprecated since Go 1.18: if s was returned by SystemCertPool, Subjects will not include the system roots. (staticcheck)
@@ -89,7 +74,6 @@ internal/badgateway/roundtripper_test.go:76:3: go-require: require must only be
 internal/badgateway/roundtripper_test.go:80:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/badgateway/roundtripper_test.go:81:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/builds/register.go:120: Function 'RegisterHandler' is too long (66 > 60) (funlen)
-internal/builds/register_test.go:75:26: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
 internal/channel/channel.go:128:31: response body must be closed (bodyclose)
 internal/config/config.go:1:1: package-comments: should have a package comment (revive)
 internal/config/config.go:26:7: exported: exported const Megabyte should have comment or be unexported (revive)
@@ -124,17 +108,8 @@ internal/config/config.go:242:70: (*AzureCredentials).getURLOpener - result 1 (e
 internal/config/config.go:285:8: G101: Potential hardcoded credentials (gosec)
 internal/dependencyproxy/dependencyproxy.go:77: Function 'Inject' is too long (70 > 60) (funlen)
 internal/dependencyproxy/dependencyproxy.go:115:32: `cancelled` is a misspelling of `canceled` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:102:91: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:111:40: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:133:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:143:40: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:314:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:365:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:371:17: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/dependencyproxy/dependencyproxy_test.go:372:4: go-require: do not use assert.FailNow in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:392:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/dependencyproxy/dependencyproxy_test.go:399:33: `artifically` is a misspelling of `artificially` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:400:59: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/dependencyproxy/dependencyproxy_test.go:411:27: response body must be closed (bodyclose)
 internal/dependencyproxy/dependencyproxy_test.go:422: internal/dependencyproxy/dependencyproxy_test.go:422: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "note that the timeout duration here is s..." (godox)
 internal/git/archive.go:35:2: var-naming: struct field CommitId should be CommitID (revive)
@@ -155,11 +130,8 @@ internal/git/git-http.go:21:2: exported: comment on exported const GitConfigShow
 internal/git/git-http.go:26:1: exported: exported function ReceivePack should have comment or be unexported (revive)
 internal/git/git-http.go:30:1: exported: exported function UploadPack should have comment or be unexported (revive)
 internal/git/info-refs.go:20:1: exported: exported function GetInfoRefsHandler should have comment or be unexported (revive)
-internal/git/info-refs_test.go:27:32: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/git/io.go:141:22: Error return value of `tempfile.Close` is not checked (errcheck)
 internal/git/io.go:173:17: Error return value of `tempfile.Close` is not checked (errcheck)
-internal/git/io_test.go:20:27: unused-parameter: parameter 'b' seems to be unused, consider removing or renaming it as _ (revive)
-internal/git/io_test.go:37:38: unused-parameter: parameter 'key' seems to be unused, consider removing or renaming it as _ (revive)
 internal/git/io_test.go:89:14: string `test data` has 3 occurrences, make it a constant (goconst)
 internal/git/receive-pack.go:21:16: Error return value of `cw.Flush` is not checked (errcheck)
 internal/git/responsewriter.go:41:6: exported: exported type HTTPResponseWriter should have comment or be unexported (revive)
@@ -167,8 +139,6 @@ internal/git/responsewriter.go:45:1: exported: exported function NewHTTPResponse
 internal/git/responsewriter.go:52:1: exported: exported method HTTPResponseWriter.Log should have comment or be unexported (revive)
 internal/git/snapshot.go:27:2: exported: exported var SendSnapshot should have comment or be unexported (revive)
 internal/git/upload-pack.go:37:16: Error return value of `cw.Flush` is not checked (errcheck)
-internal/git/upload-pack_test.go:32:27: unused-parameter: parameter 'b' seems to be unused, consider removing or renaming it as _ (revive)
-internal/git/upload-pack_test.go:51:38: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
 internal/git/upload-pack_test.go:70:2: error-is-as: use require.ErrorIs (testifylint)
 internal/git/upload-pack_test.go:85:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/gitaly/blob.go:1:1: package-comments: should have a package comment (revive)
@@ -225,8 +195,6 @@ internal/lsif_transformer/parser/parser.go:90:1: exported: exported method Parse
 internal/lsif_transformer/parser/ranges.go:35:2: var-naming: struct field RangeIds should be RangeIDs (revive)
 internal/lsif_transformer/parser/ranges.go:98:41: var-naming: method parameter rangeIds should be rangeIDs (revive)
 internal/proxy/proxy.go:142:14: SA6002: argument should be pointer-like to avoid allocations (staticcheck)
-internal/queueing/requests_test.go:13:64: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/queueing/requests_test.go:18:54: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/redis/keywatcher.go:1:1: package-comments: should have a package comment (revive)
 internal/redis/keywatcher.go:19:6: exported: exported type KeyWatcher should have comment or be unexported (revive)
 internal/redis/keywatcher.go:28:1: exported: exported function NewKeyWatcher should have comment or be unexported (revive)
@@ -254,60 +222,36 @@ internal/redis/redis_test.go:18:2: error-nil: use require.NoError (testifylint)
 internal/redis/redis_test.go:23:3: error-nil: use require.NoError (testifylint)
 internal/redis/redis_test.go:66:15: `initialise` is a misspelling of `initialize` (misspell)
 internal/redis/redis_test.go:105:15: `initialise` is a misspelling of `initialize` (misspell)
-internal/rejectmethods/middleware_test.go:13:58: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/senddata/contentprocessor/contentprocessor.go:136:35: response body must be closed (bodyclose)
 internal/sendfile/sendfile_test.go:180:34: response body must be closed (bodyclose)
-internal/sendurl/sendurl.go:69:33: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
 internal/sendurl/sendurl.go:99: Function 'Inject' has too many statements (47 > 40) (funlen)
 internal/sendurl/sendurl.go:226:45: response body must be closed (bodyclose)
-internal/sendurl/sendurl_test.go:75:22: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/testhelper/gitaly.go:277: 277-296 lines are duplicate of `internal/testhelper/gitaly.go:315-336` (dupl)
 internal/testhelper/gitaly.go:315: 315-336 lines are duplicate of `internal/testhelper/gitaly.go:338-357` (dupl)
 internal/testhelper/gitaly.go:338: 338-357 lines are duplicate of `internal/testhelper/gitaly.go:277-296` (dupl)
 internal/testhelper/testhelper.go:18:2: import 'github.com/dlclark/regexp2' is not allowed from list 'main' (depguard)
 internal/testhelper/testhelper.go:243:21: G302: Expect file permissions to be 0600 or less (gosec)
-internal/upload/artifacts_store_test.go:141:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:163:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:192:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:217:41: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:221:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:269:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:309:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/artifacts_upload_test.go:49:1: cognitive complexity 32 of func `testArtifactsUploadServer` is high (> 20) (gocognit)
-internal/upload/artifacts_upload_test.go:204:10: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:235:8: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/artifacts_uploader.go:62: Function 'generateMetadataFromZip' is too long (66 > 60) (funlen)
 internal/upload/artifacts_uploader.go:82:11: G204: Subprocess launched with a potential tainted input or cmd arguments (gosec)
-internal/upload/body_uploader_test.go:81:33: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/body_uploader_test.go:156:55: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/destination.go:72: internal/upload/destination/destination.go:72: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: remove `data` these once rails ful..." (godox)
 internal/upload/destination/destination.go:117: Function 'Upload' has too many statements (48 > 40) (funlen)
 internal/upload/destination/multi_hash.go:4:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/multi_hash.go:5:2: G505: Blocklisted import crypto/sha1: weak cryptographic primitive (gosec)
-internal/upload/destination/objectstore/object_test.go:124:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/objectstore/object_test.go:127:4: go-require: do not use assert.FailNow in http handlers (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:105:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:109:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:110:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/test/objectstore_stub.go:4:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/objectstore/test/objectstore_stub.go:169:13: G401: Use of weak cryptographic primitive (gosec)
-internal/upload/destination/objectstore/test/s3_stub.go:120:51: unused-parameter: parameter 'tmpfile' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/objectstore/upload_strategy.go:29: internal/upload/destination/objectstore/upload_strategy.go:29: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: consider adding the context to the..." (godox)
 internal/upload/destination/objectstore/uploader.go:5:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/objectstore/uploader.go:95:12: G401: Use of weak cryptographic primitive (gosec)
 internal/upload/exif/exif.go:103:10: G204: Subprocess launched with variable (gosec)
 internal/upload/uploads.go:62:16: Error return value of `fmt.Fprintln` is not checked (errcheck)
 internal/upload/uploads.go:101:15: Error return value of `fmt.Fprintln` is not checked (errcheck)
-internal/upload/uploads_test.go:405:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:488:43: unused-parameter: parameter 'rw' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/uploads_test.go:527:3: negative-positive: use assert.Positive (testifylint)
 internal/upload/uploads_test.go:545:3: negative-positive: use assert.Positive (testifylint)
-internal/upload/uploads_test.go:573:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper.go:53:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper.go:57:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper_test.go:49:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper_test.go:59:75: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/routes.go:106:28: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/routes.go:150:68: `(*upstream).wsRoute` - `matchers` always receives `nil` (unparam)
 internal/upstream/routes.go:210: Function 'configureRoutes' is too long (235 > 60) (funlen)
 internal/upstream/routes.go:383: internal/upstream/routes.go:383: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: We should probably not return a HT..." (godox)
diff --git a/workhorse/_support/lint_last_known_acceptable_go1.22.txt b/workhorse/_support/lint_last_known_acceptable_go1.22.txt
index dfe42fea79bbc..ea1b4a5d462ad 100644
--- a/workhorse/_support/lint_last_known_acceptable_go1.22.txt
+++ b/workhorse/_support/lint_last_known_acceptable_go1.22.txt
@@ -2,9 +2,7 @@ cmd/gitlab-resize-image/main.go:1:1: package-comments: should have a package com
 cmd/gitlab-resize-image/png/reader.go:1:1: package-comments: should have a package comment (revive)
 cmd/gitlab-resize-image/png/reader.go:26:1: exported: exported function NewReader should have comment or be unexported (revive)
 cmd/gitlab-resize-image/png/reader.go:78:17: var-declaration: should omit type []byte from declaration of var magicBytes; it will be inferred from the right-hand side (revive)
-cmd/gitlab-workhorse/authorization_test.go:72:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/config_test.go:191: cmd/gitlab-workhorse/config_test.go:191: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO this is meant to be 50*time.Second ..." (godox)
-cmd/gitlab-workhorse/config_test.go:333:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/jobs_test.go:37:29: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/jobs_test.go:42:29: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/listener.go:34:16: G402: TLS MinVersion too low. (gosec)
@@ -25,7 +23,6 @@ cmd/gitlab-workhorse/main.go:240:26: Error return value of `accessCloser.Close`
 cmd/gitlab-workhorse/main.go:264:10: G112: Potential Slowloris Attack because ReadHeaderTimeout is not configured in the http.Server (gosec)
 cmd/gitlab-workhorse/main_test.go:60:2: exitAfterDefer: os.Exit will exit, and `defer gitaly.CloseConnections()` will not run (gocritic)
 cmd/gitlab-workhorse/main_test.go:107:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:132:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:143:24: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:156:66: wrapperFunc: use http.NotFoundHandler method in `http.HandlerFunc(http.NotFound)` (gocritic)
 cmd/gitlab-workhorse/main_test.go:163:23: response body must be closed (bodyclose)
@@ -33,19 +30,12 @@ cmd/gitlab-workhorse/main_test.go:186:24: response body must be closed (bodyclos
 cmd/gitlab-workhorse/main_test.go:212:25: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:243:23: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:246:25: unnecessary conversion (unconvert)
-cmd/gitlab-workhorse/main_test.go:263:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:315:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:369:41: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:416:38: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:431:38: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:445:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:450:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:455:61: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:457:3: bool-compare: use assert.True (testifylint)
 cmd/gitlab-workhorse/main_test.go:485:40: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:509:23: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:519:3: ifElseChain: rewrite if-else to switch statement (gocritic)
-cmd/gitlab-workhorse/main_test.go:565:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:575:21: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:578:3: var-naming: var requestIds should be requestIDs (revive)
 cmd/gitlab-workhorse/main_test.go:579:3: len: use require.Len (testifylint)
@@ -53,16 +43,12 @@ cmd/gitlab-workhorse/main_test.go:651:4: var-naming: var propagatedRequestId sho
 cmd/gitlab-workhorse/main_test.go:658:22: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:659:4: var-naming: var requestIds should be requestIDs (revive)
 cmd/gitlab-workhorse/main_test.go:662:4: len: use require.Len (testifylint)
-cmd/gitlab-workhorse/main_test.go:674:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:792:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/main_test.go:871:25: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:896:25: response body must be closed (bodyclose)
 cmd/gitlab-workhorse/main_test.go:937:4: var-naming: var originResourceUrl should be originResourceURL (revive)
 cmd/gitlab-workhorse/proxy_test.go:55:9: shadow: declaration of "err" shadows declaration at line 36 (govet)
 cmd/gitlab-workhorse/proxy_test.go:77:6: var-naming: var tsUrl should be tsURL (revive)
 cmd/gitlab-workhorse/proxy_test.go:87:6: shadow: declaration of "err" shadows declaration at line 78 (govet)
-cmd/gitlab-workhorse/proxy_test.go:132:51: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/proxy_test.go:158:45: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/raven.go:17:14: Error return value of `raven.SetDSN` is not checked (errcheck)
 cmd/gitlab-workhorse/upload_test.go:372:4: require-error: for error assertions use require (testifylint)
 cmd/gitlab-workhorse/upload_test.go:377:4: require-error: for error assertions use require (testifylint)
@@ -81,7 +67,6 @@ cmd/gitlab-zip-metadata/main.go:66:9: superfluous-else: if block ends with call
 internal/api/api.go:146:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:149:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:153:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
-internal/api/api_test.go:182:49: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/api/block_test.go:61:34: response body must be closed (bodyclose)
 internal/api/channel_settings.go:57:28: G402: TLS MinVersion too low. (gosec)
 internal/api/channel_settings_test.go:125:22: SA1019: dialer.TLSClientConfig.RootCAs.Subjects has been deprecated since Go 1.18: if s was returned by [SystemCertPool], Subjects will not include the system roots. (staticcheck)
@@ -89,7 +74,6 @@ internal/badgateway/roundtripper_test.go:76:3: go-require: require must only be
 internal/badgateway/roundtripper_test.go:80:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/badgateway/roundtripper_test.go:81:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/builds/register.go:120: Function 'RegisterHandler' is too long (66 > 60) (funlen)
-internal/builds/register_test.go:75:26: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
 internal/channel/channel.go:128:31: response body must be closed (bodyclose)
 internal/config/config.go:1:1: package-comments: should have a package comment (revive)
 internal/config/config.go:26:7: exported: exported const Megabyte should have comment or be unexported (revive)
@@ -124,17 +108,8 @@ internal/config/config.go:242:70: (*AzureCredentials).getURLOpener - result 1 (e
 internal/config/config.go:285:8: G101: Potential hardcoded credentials (gosec)
 internal/dependencyproxy/dependencyproxy.go:77: Function 'Inject' is too long (70 > 60) (funlen)
 internal/dependencyproxy/dependencyproxy.go:115:32: `cancelled` is a misspelling of `canceled` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:102:91: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:111:40: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:133:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:143:40: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:314:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:365:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:371:17: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/dependencyproxy/dependencyproxy_test.go:372:4: go-require: do not use assert.FailNow in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:392:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/dependencyproxy/dependencyproxy_test.go:399:33: `artifically` is a misspelling of `artificially` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:400:59: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/dependencyproxy/dependencyproxy_test.go:411:27: response body must be closed (bodyclose)
 internal/dependencyproxy/dependencyproxy_test.go:422: internal/dependencyproxy/dependencyproxy_test.go:422: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "note that the timeout duration here is s..." (godox)
 internal/git/archive.go:35:2: var-naming: struct field CommitId should be CommitID (revive)
@@ -155,11 +130,8 @@ internal/git/git-http.go:21:2: exported: comment on exported const GitConfigShow
 internal/git/git-http.go:26:1: exported: exported function ReceivePack should have comment or be unexported (revive)
 internal/git/git-http.go:30:1: exported: exported function UploadPack should have comment or be unexported (revive)
 internal/git/info-refs.go:20:1: exported: exported function GetInfoRefsHandler should have comment or be unexported (revive)
-internal/git/info-refs_test.go:27:32: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/git/io.go:141:22: Error return value of `tempfile.Close` is not checked (errcheck)
 internal/git/io.go:173:17: Error return value of `tempfile.Close` is not checked (errcheck)
-internal/git/io_test.go:20:27: unused-parameter: parameter 'b' seems to be unused, consider removing or renaming it as _ (revive)
-internal/git/io_test.go:37:38: unused-parameter: parameter 'key' seems to be unused, consider removing or renaming it as _ (revive)
 internal/git/io_test.go:89:14: string `test data` has 3 occurrences, make it a constant (goconst)
 internal/git/receive-pack.go:21:16: Error return value of `cw.Flush` is not checked (errcheck)
 internal/git/responsewriter.go:41:6: exported: exported type HTTPResponseWriter should have comment or be unexported (revive)
@@ -167,8 +139,6 @@ internal/git/responsewriter.go:45:1: exported: exported function NewHTTPResponse
 internal/git/responsewriter.go:52:1: exported: exported method HTTPResponseWriter.Log should have comment or be unexported (revive)
 internal/git/snapshot.go:27:2: exported: exported var SendSnapshot should have comment or be unexported (revive)
 internal/git/upload-pack.go:37:16: Error return value of `cw.Flush` is not checked (errcheck)
-internal/git/upload-pack_test.go:32:27: unused-parameter: parameter 'b' seems to be unused, consider removing or renaming it as _ (revive)
-internal/git/upload-pack_test.go:51:38: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
 internal/git/upload-pack_test.go:70:2: error-is-as: use require.ErrorIs (testifylint)
 internal/git/upload-pack_test.go:85:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/gitaly/blob.go:1:1: package-comments: should have a package comment (revive)
@@ -225,8 +195,6 @@ internal/lsif_transformer/parser/parser.go:90:1: exported: exported method Parse
 internal/lsif_transformer/parser/ranges.go:35:2: var-naming: struct field RangeIds should be RangeIDs (revive)
 internal/lsif_transformer/parser/ranges.go:98:41: var-naming: method parameter rangeIds should be rangeIDs (revive)
 internal/proxy/proxy.go:142:14: SA6002: argument should be pointer-like to avoid allocations (staticcheck)
-internal/queueing/requests_test.go:13:64: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/queueing/requests_test.go:18:54: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/redis/keywatcher.go:1:1: package-comments: should have a package comment (revive)
 internal/redis/keywatcher.go:19:6: exported: exported type KeyWatcher should have comment or be unexported (revive)
 internal/redis/keywatcher.go:28:1: exported: exported function NewKeyWatcher should have comment or be unexported (revive)
@@ -254,60 +222,36 @@ internal/redis/redis_test.go:18:2: error-nil: use require.NoError (testifylint)
 internal/redis/redis_test.go:23:3: error-nil: use require.NoError (testifylint)
 internal/redis/redis_test.go:66:15: `initialise` is a misspelling of `initialize` (misspell)
 internal/redis/redis_test.go:105:15: `initialise` is a misspelling of `initialize` (misspell)
-internal/rejectmethods/middleware_test.go:13:58: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/senddata/contentprocessor/contentprocessor.go:136:35: response body must be closed (bodyclose)
 internal/sendfile/sendfile_test.go:180:34: response body must be closed (bodyclose)
-internal/sendurl/sendurl.go:69:33: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
 internal/sendurl/sendurl.go:99: Function 'Inject' has too many statements (47 > 40) (funlen)
 internal/sendurl/sendurl.go:226:45: response body must be closed (bodyclose)
-internal/sendurl/sendurl_test.go:75:22: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/testhelper/gitaly.go:277: 277-296 lines are duplicate of `internal/testhelper/gitaly.go:315-336` (dupl)
 internal/testhelper/gitaly.go:315: 315-336 lines are duplicate of `internal/testhelper/gitaly.go:338-357` (dupl)
 internal/testhelper/gitaly.go:338: 338-357 lines are duplicate of `internal/testhelper/gitaly.go:277-296` (dupl)
 internal/testhelper/testhelper.go:18:2: import 'github.com/dlclark/regexp2' is not allowed from list 'main' (depguard)
 internal/testhelper/testhelper.go:243:21: G302: Expect file permissions to be 0600 or less (gosec)
-internal/upload/artifacts_store_test.go:141:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:163:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:192:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:217:41: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:221:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:269:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:309:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/artifacts_upload_test.go:49:1: cognitive complexity 32 of func `testArtifactsUploadServer` is high (> 20) (gocognit)
-internal/upload/artifacts_upload_test.go:204:10: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:235:8: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/artifacts_uploader.go:62: Function 'generateMetadataFromZip' is too long (66 > 60) (funlen)
 internal/upload/artifacts_uploader.go:82:11: G204: Subprocess launched with a potential tainted input or cmd arguments (gosec)
-internal/upload/body_uploader_test.go:81:33: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/body_uploader_test.go:156:55: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/destination.go:72: internal/upload/destination/destination.go:72: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: remove `data` these once rails ful..." (godox)
 internal/upload/destination/destination.go:117: Function 'Upload' has too many statements (48 > 40) (funlen)
 internal/upload/destination/multi_hash.go:4:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/multi_hash.go:5:2: G505: Blocklisted import crypto/sha1: weak cryptographic primitive (gosec)
-internal/upload/destination/objectstore/object_test.go:124:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/objectstore/object_test.go:127:4: go-require: do not use assert.FailNow in http handlers (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:105:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:109:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:110:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/test/objectstore_stub.go:4:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/objectstore/test/objectstore_stub.go:169:13: G401: Use of weak cryptographic primitive (gosec)
-internal/upload/destination/objectstore/test/s3_stub.go:120:51: unused-parameter: parameter 'tmpfile' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/objectstore/upload_strategy.go:29: internal/upload/destination/objectstore/upload_strategy.go:29: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: consider adding the context to the..." (godox)
 internal/upload/destination/objectstore/uploader.go:5:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/objectstore/uploader.go:95:12: G401: Use of weak cryptographic primitive (gosec)
 internal/upload/exif/exif.go:103:10: G204: Subprocess launched with variable (gosec)
 internal/upload/uploads.go:62:16: Error return value of `fmt.Fprintln` is not checked (errcheck)
 internal/upload/uploads.go:101:15: Error return value of `fmt.Fprintln` is not checked (errcheck)
-internal/upload/uploads_test.go:405:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:488:43: unused-parameter: parameter 'rw' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/uploads_test.go:527:3: negative-positive: use assert.Positive (testifylint)
 internal/upload/uploads_test.go:545:3: negative-positive: use assert.Positive (testifylint)
-internal/upload/uploads_test.go:573:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper.go:53:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper.go:57:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper_test.go:49:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/roundtripper/roundtripper_test.go:59:75: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upstream/routes.go:106:28: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/routes.go:150:68: `(*upstream).wsRoute` - `matchers` always receives `nil` (unparam)
 internal/upstream/routes.go:210: Function 'configureRoutes' is too long (235 > 60) (funlen)
 internal/upstream/routes.go:383: internal/upstream/routes.go:383: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: We should probably not return a HT..." (godox)
diff --git a/workhorse/cmd/gitlab-workhorse/authorization_test.go b/workhorse/cmd/gitlab-workhorse/authorization_test.go
index 07c8a76c3fddd..d783de8c6bbe8 100644
--- a/workhorse/cmd/gitlab-workhorse/authorization_test.go
+++ b/workhorse/cmd/gitlab-workhorse/authorization_test.go
@@ -69,7 +69,7 @@ func TestPreAuthorizeJsonFailure(t *testing.T) {
 }
 
 func TestPreAuthorizeContentTypeFailure(t *testing.T) {
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		_, err := w.Write([]byte(`{"hello":"world"}`))
 		assert.NoError(t, err, "write auth response")
 	}))
diff --git a/workhorse/cmd/gitlab-workhorse/config_test.go b/workhorse/cmd/gitlab-workhorse/config_test.go
index 1a117ecda62bf..48dd0a3b7320a 100644
--- a/workhorse/cmd/gitlab-workhorse/config_test.go
+++ b/workhorse/cmd/gitlab-workhorse/config_test.go
@@ -330,7 +330,7 @@ func TestLoadConfigCommand(t *testing.T) {
 	}{
 		{
 			desc: "nonexistent executable",
-			setup: func(t *testing.T) setupData {
+			setup: func(_ *testing.T) setupData {
 				return setupData{
 					cfg: config.Config{
 						ConfigCommand: "/does/not/exist",
diff --git a/workhorse/cmd/gitlab-workhorse/main_test.go b/workhorse/cmd/gitlab-workhorse/main_test.go
index 5809cd7664918..763fd668319ee 100644
--- a/workhorse/cmd/gitlab-workhorse/main_test.go
+++ b/workhorse/cmd/gitlab-workhorse/main_test.go
@@ -129,7 +129,7 @@ func TestAllowedStaticFile(t *testing.T) {
 	setupStaticFile(t, "static file.txt", content)
 
 	proxied := false
-	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
+	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		proxied = true
 		w.WriteHeader(404)
 	})
@@ -260,7 +260,7 @@ func TestGzipAssets(t *testing.T) {
 	setupStaticFile(t, path+".gz", contentGzip)
 
 	proxied := false
-	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
+	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		proxied = true
 		w.WriteHeader(404)
 	})
@@ -312,7 +312,7 @@ func TestAltDocumentAssets(t *testing.T) {
 	setupAltStaticFile(t, path+".gz", contentGzip)
 
 	proxied := false
-	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
+	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		proxied = true
 		w.WriteHeader(404)
 	})
@@ -366,7 +366,7 @@ func TestAltDocumentAssets(t *testing.T) {
 var sendDataHeader = "Gitlab-Workhorse-Send-Data"
 
 func sendDataResponder(command string, literalJSON string) *httptest.Server {
-	handler := func(w http.ResponseWriter, r *http.Request) {
+	handler := func(w http.ResponseWriter, _ *http.Request) {
 		data := base64.URLEncoding.EncodeToString([]byte(literalJSON))
 		w.Header().Set(sendDataHeader, fmt.Sprintf("%s:%s", command, data))
 
@@ -442,17 +442,17 @@ func TestImageResizing(t *testing.T) {
 func TestSendURLForArtifacts(t *testing.T) {
 	expectedBody := strings.Repeat("CONTENT!", 1024)
 
-	regularHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	regularHandler := http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.Header().Set("Content-Length", strconv.Itoa(len(expectedBody)))
 		w.Write([]byte(expectedBody))
 	})
 
-	chunkedHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	chunkedHandler := http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.Header().Set("Transfer-Encoding", "chunked")
 		w.Write([]byte(expectedBody))
 	})
 
-	rawHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	rawHandler := http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		hj, ok := w.(http.Hijacker)
 		assert.Equal(t, true, ok)
 
@@ -562,7 +562,7 @@ func TestAPIFalsePositivesAreProxied(t *testing.T) {
 }
 
 func TestCorrelationIdHeader(t *testing.T) {
-	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
+	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		w.Header().Add("X-Request-Id", "12345678")
 		w.WriteHeader(200)
 	})
@@ -671,7 +671,7 @@ func TestPropagateCorrelationIdHeader(t *testing.T) {
 }
 
 func TestRejectUnknownMethod(t *testing.T) {
-	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
+	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		w.WriteHeader(200)
 	})
 	defer ts.Close()
@@ -789,7 +789,7 @@ func runOrFail(t *testing.T, cmd *exec.Cmd) {
 	require.NoError(t, err)
 }
 
-func gitOkBody(t *testing.T) *api.Response {
+func gitOkBody(_ *testing.T) *api.Response {
 	return &api.Response{
 		GL_ID:       "user-123",
 		GL_USERNAME: "username",
diff --git a/workhorse/cmd/gitlab-workhorse/proxy_test.go b/workhorse/cmd/gitlab-workhorse/proxy_test.go
index 8569e0fcd3e93..cd7bfa5775fbd 100644
--- a/workhorse/cmd/gitlab-workhorse/proxy_test.go
+++ b/workhorse/cmd/gitlab-workhorse/proxy_test.go
@@ -129,7 +129,7 @@ func TestProxyError(t *testing.T) {
 }
 
 func TestProxyReadTimeout(t *testing.T) {
-	ts := testhelper.TestServerWithHandler(nil, func(w http.ResponseWriter, r *http.Request) {
+	ts := testhelper.TestServerWithHandler(nil, func(_ http.ResponseWriter, _ *http.Request) {
 		time.Sleep(time.Minute)
 	})
 
@@ -155,7 +155,7 @@ func TestProxyReadTimeout(t *testing.T) {
 
 func TestProxyHandlerTimeout(t *testing.T) {
 	ts := testhelper.TestServerWithHandler(nil,
-		http.TimeoutHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		http.TimeoutHandler(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {
 			time.Sleep(time.Second)
 		}), time.Millisecond, "Request took too long").ServeHTTP,
 	)
diff --git a/workhorse/internal/api/api_test.go b/workhorse/internal/api/api_test.go
index 724d29c9d1a9e..e44dca2798493 100644
--- a/workhorse/internal/api/api_test.go
+++ b/workhorse/internal/api/api_test.go
@@ -179,7 +179,7 @@ func TestSendGitAuditEvent(t *testing.T) {
 		requestBody    GitAuditEventRequest
 	)
 
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	ts := httptest.NewServer(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) {
 		if r.URL.Path != "/api/v4/internal/shellhorse/git_audit_event" {
 			return
 		}
diff --git a/workhorse/internal/builds/register_test.go b/workhorse/internal/builds/register_test.go
index 3fff7b2be63a6..787449050474c 100644
--- a/workhorse/internal/builds/register_test.go
+++ b/workhorse/internal/builds/register_test.go
@@ -72,7 +72,7 @@ func TestRegisterHandlerMissingData(t *testing.T) {
 func expectWatcherToBeExecuted(t *testing.T, watchKeyStatus redis.WatchKeyStatus, watchKeyError error,
 	httpStatus int, msgAndArgs ...interface{}) {
 	executed := false
-	watchKeyHandler := func(ctx context.Context, key, value string, timeout time.Duration) (redis.WatchKeyStatus, error) {
+	watchKeyHandler := func(_ context.Context, _, _ string, _ time.Duration) (redis.WatchKeyStatus, error) {
 		executed = true
 		return watchKeyStatus, watchKeyError
 	}
diff --git a/workhorse/internal/dependencyproxy/dependencyproxy_test.go b/workhorse/internal/dependencyproxy/dependencyproxy_test.go
index 094ef7c22eee7..6b8951ffdca45 100644
--- a/workhorse/internal/dependencyproxy/dependencyproxy_test.go
+++ b/workhorse/internal/dependencyproxy/dependencyproxy_test.go
@@ -99,7 +99,7 @@ func TestInject(t *testing.T) {
 	testhelper.ConfigureSecret()
 
 	for _, tc := range testCases {
-		originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 			w.Header().Set("Content-Length", strconv.Itoa(tc.contentLength))
 			w.Write([]byte(content))
 		}))
@@ -108,7 +108,7 @@ func TestInject(t *testing.T) {
 		// RequestBody expects http.Handler as its second param, we can create a stub function and verify that
 		// it's only called for successful requests
 		handlerIsCalled := false
-		handlerFunc := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { handlerIsCalled = true })
+		handlerFunc := http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) { handlerIsCalled = true })
 
 		bodyUploader := upload.RequestBody(&fakePreAuthHandler{}, handlerFunc, &upload.DefaultPreparer{})
 
@@ -130,7 +130,7 @@ func TestSuccessfullRequest(t *testing.T) {
 	contentType := "foo"
 	dockerContentDigest := "sha256:asdf1234"
 	overriddenHeader := "originResourceServer"
-	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.Header().Set("Content-Length", contentLength)
 		w.Header().Set("Content-Type", contentType)
 		w.Header().Set("Docker-Content-Digest", dockerContentDigest)
@@ -140,7 +140,7 @@ func TestSuccessfullRequest(t *testing.T) {
 	defer originResourceServer.Close()
 
 	uploadHandler := &fakeUploadHandler{
-		handler: func(w http.ResponseWriter, r *http.Request) {
+		handler: func(w http.ResponseWriter, _ *http.Request) {
 			w.WriteHeader(200)
 		},
 	}
@@ -311,7 +311,7 @@ func TestInvalidUploadConfiguration(t *testing.T) {
 }
 
 func TestTimeoutConfiguration(t *testing.T) {
-	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	originResourceServer := httptest.NewServer(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {
 		time.Sleep(20 * time.Millisecond)
 	}))
 	defer originResourceServer.Close()
@@ -362,13 +362,13 @@ func TestIncorrectSendDataUrl(t *testing.T) {
 }
 
 func TestFailedOriginServer(t *testing.T) {
-	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.WriteHeader(404)
 		w.Write([]byte("Not found"))
 	}))
 
 	uploadHandler := &fakeUploadHandler{
-		handler: func(w http.ResponseWriter, r *http.Request) {
+		handler: func(_ http.ResponseWriter, _ *http.Request) {
 			assert.FailNow(t, "the error response must not be uploaded")
 		},
 	}
@@ -389,7 +389,7 @@ func TestLongUploadRequest(t *testing.T) {
 	contentLength := strconv.Itoa(len(content))
 
 	// the server holding the upstream resource
-	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.Header().Set("Content-Length", contentLength)
 		w.Write(content)
 	}))
@@ -397,7 +397,7 @@ func TestLongUploadRequest(t *testing.T) {
 
 	// the server receiving the upload request
 	// it makes the upload request artifically long with a sleep
-	uploadServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	uploadServer := httptest.NewServer(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {
 		time.Sleep(40 * time.Millisecond)
 	}))
 	defer uploadServer.Close()
diff --git a/workhorse/internal/git/info-refs_test.go b/workhorse/internal/git/info-refs_test.go
index d573d0a2dc420..49ef92579fa8d 100644
--- a/workhorse/internal/git/info-refs_test.go
+++ b/workhorse/internal/git/info-refs_test.go
@@ -24,7 +24,7 @@ func (srv *smartHTTPServiceServerWithInfoRefs) InfoRefsUploadPack(r *gitalypb.In
 
 func TestGetInfoRefsHandler(t *testing.T) {
 	addr := startSmartHTTPServer(t, &smartHTTPServiceServerWithInfoRefs{
-		InfoRefsUploadPackFunc: func(r *gitalypb.InfoRefsRequest, s gitalypb.SmartHTTPService_InfoRefsUploadPackServer) error {
+		InfoRefsUploadPackFunc: func(_ *gitalypb.InfoRefsRequest, _ gitalypb.SmartHTTPService_InfoRefsUploadPackServer) error {
 			return grpcstatus.Error(grpccodes.Unavailable, "error")
 		},
 	})
diff --git a/workhorse/internal/git/io_test.go b/workhorse/internal/git/io_test.go
index f283c20c23c70..bad17337d511f 100644
--- a/workhorse/internal/git/io_test.go
+++ b/workhorse/internal/git/io_test.go
@@ -17,7 +17,7 @@ type fakeReader struct {
 	err error
 }
 
-func (f *fakeReader) Read(b []byte) (int, error) {
+func (f *fakeReader) Read(_ []byte) (int, error) {
 	return f.n, f.err
 }
 
@@ -34,7 +34,7 @@ func (*fakeContextWithTimeout) Done() <-chan struct{} {
 	return nil
 }
 
-func (*fakeContextWithTimeout) Value(key interface{}) interface{} {
+func (*fakeContextWithTimeout) Value(_ interface{}) interface{} {
 	return nil
 }
 
diff --git a/workhorse/internal/git/upload-pack_test.go b/workhorse/internal/git/upload-pack_test.go
index f1edec658a9e3..2cb0e7c4d8a83 100644
--- a/workhorse/internal/git/upload-pack_test.go
+++ b/workhorse/internal/git/upload-pack_test.go
@@ -29,7 +29,7 @@ type waitReader struct {
 	t time.Duration
 }
 
-func (f *waitReader) Read(b []byte) (int, error) {
+func (f *waitReader) Read(_ []byte) (int, error) {
 	time.Sleep(f.t)
 	return 0, io.EOF
 }
@@ -48,7 +48,7 @@ func TestUploadPackTimesOut(t *testing.T) {
 	defer func() { uploadPackTimeout = originalUploadPackTimeout }()
 
 	addr := startSmartHTTPServer(t, &smartHTTPServiceServer{
-		handler: func(ctx context.Context, req *gitalypb.PostUploadPackWithSidechannelRequest) (*gitalypb.PostUploadPackWithSidechannelResponse, error) {
+		handler: func(ctx context.Context, _ *gitalypb.PostUploadPackWithSidechannelRequest) (*gitalypb.PostUploadPackWithSidechannelResponse, error) {
 			conn, err := client.OpenServerSidechannel(ctx)
 			if err != nil {
 				return nil, err
diff --git a/workhorse/internal/queueing/requests_test.go b/workhorse/internal/queueing/requests_test.go
index 7cd82cdf96bae..55b60d2898466 100644
--- a/workhorse/internal/queueing/requests_test.go
+++ b/workhorse/internal/queueing/requests_test.go
@@ -10,12 +10,12 @@ import (
 	"github.com/prometheus/client_golang/prometheus"
 )
 
-var httpHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+var httpHandler = http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 	fmt.Fprintln(w, "OK")
 })
 
 func pausedHTTPHandler(pauseCh chan struct{}) http.Handler {
-	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	return http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		<-pauseCh
 		fmt.Fprintln(w, "OK")
 	})
diff --git a/workhorse/internal/rejectmethods/middleware_test.go b/workhorse/internal/rejectmethods/middleware_test.go
index d6cdab4522394..7edbdd3610241 100644
--- a/workhorse/internal/rejectmethods/middleware_test.go
+++ b/workhorse/internal/rejectmethods/middleware_test.go
@@ -10,7 +10,7 @@ import (
 )
 
 func TestNewMiddleware(t *testing.T) {
-	handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	handler := http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		io.WriteString(w, "OK\n")
 	})
 
diff --git a/workhorse/internal/sendurl/sendurl.go b/workhorse/internal/sendurl/sendurl.go
index 2e5aef4c8e5a7..800807c69fdf7 100644
--- a/workhorse/internal/sendurl/sendurl.go
+++ b/workhorse/internal/sendurl/sendurl.go
@@ -66,7 +66,7 @@ var preserveHeaderKeys = map[string]bool{
 	"Pragma":        true, // Support for HTTP 1.0 proxies
 }
 
-var httpClientNoRedirect = func(req *http.Request, via []*http.Request) error {
+var httpClientNoRedirect = func(_ *http.Request, _ []*http.Request) error {
 	return http.ErrUseLastResponse
 }
 
diff --git a/workhorse/internal/sendurl/sendurl_test.go b/workhorse/internal/sendurl/sendurl_test.go
index bb59e415b7ac0..f06264dde8fbc 100644
--- a/workhorse/internal/sendurl/sendurl_test.go
+++ b/workhorse/internal/sendurl/sendurl_test.go
@@ -72,7 +72,7 @@ func testEntryServer(t *testing.T, requestURL string, httpHeaders http.Header, a
 		assert.Equal(t, "GET", r.Method)
 		http.Redirect(w, r, r.URL.String()+"/download", http.StatusTemporaryRedirect)
 	}
-	timeoutFile := func(w http.ResponseWriter, r *http.Request) {
+	timeoutFile := func(_ http.ResponseWriter, _ *http.Request) {
 		time.Sleep(20 * time.Millisecond)
 	}
 
diff --git a/workhorse/internal/upload/artifacts_store_test.go b/workhorse/internal/upload/artifacts_store_test.go
index 29584422bad71..6fee9f0ba597c 100644
--- a/workhorse/internal/upload/artifacts_store_test.go
+++ b/workhorse/internal/upload/artifacts_store_test.go
@@ -138,7 +138,7 @@ func TestUploadHandlerSendingToExternalStorage(t *testing.T) {
 func TestUploadHandlerSendingToExternalStorageAndStorageServerUnreachable(t *testing.T) {
 	tempPath := t.TempDir()
 
-	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
+	responseProcessor := func(_ http.ResponseWriter, _ *http.Request) {
 		t.Fatal("it should not be called")
 	}
 
@@ -160,7 +160,7 @@ func TestUploadHandlerSendingToExternalStorageAndStorageServerUnreachable(t *tes
 func TestUploadHandlerSendingToExternalStorageAndInvalidURLIsUsed(t *testing.T) {
 	tempPath := t.TempDir()
 
-	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
+	responseProcessor := func(_ http.ResponseWriter, _ *http.Request) {
 		t.Fatal("it should not be called")
 	}
 
@@ -189,7 +189,7 @@ func TestUploadHandlerSendingToExternalStorageAndItReturnsAnError(t *testing.T)
 		w.WriteHeader(510)
 	})
 
-	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
+	responseProcessor := func(_ http.ResponseWriter, _ *http.Request) {
 		t.Fatal("it should not be called")
 	}
 
@@ -214,11 +214,11 @@ func TestUploadHandlerSendingToExternalStorageAndItReturnsAnError(t *testing.T)
 func TestUploadHandlerSendingToExternalStorageAndSupportRequestTimeout(t *testing.T) {
 	shutdown := make(chan struct{})
 	storeServerMux := http.NewServeMux()
-	storeServerMux.HandleFunc(putURL, func(w http.ResponseWriter, r *http.Request) {
+	storeServerMux.HandleFunc(putURL, func(_ http.ResponseWriter, _ *http.Request) {
 		<-shutdown
 	})
 
-	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
+	responseProcessor := func(_ http.ResponseWriter, _ *http.Request) {
 		t.Fatal("it should not be called")
 	}
 
@@ -266,7 +266,7 @@ func TestUploadHandlerMultipartUploadSizeLimit(t *testing.T) {
 		},
 	}
 
-	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
+	responseProcessor := func(_ http.ResponseWriter, _ *http.Request) {
 		t.Fatal("it should not be called")
 	}
 
@@ -306,7 +306,7 @@ func TestUploadHandlerMultipartUploadMaximumSizeFromApi(t *testing.T) {
 		},
 	}
 
-	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
+	responseProcessor := func(_ http.ResponseWriter, _ *http.Request) {
 		t.Fatal("it should not be called")
 	}
 
diff --git a/workhorse/internal/upload/artifacts_upload_test.go b/workhorse/internal/upload/artifacts_upload_test.go
index ca87b5b3a3e44..92e35a6c535cd 100644
--- a/workhorse/internal/upload/artifacts_upload_test.go
+++ b/workhorse/internal/upload/artifacts_upload_test.go
@@ -201,7 +201,7 @@ func TestUploadHandlerAddingMetadata(t *testing.T) {
 	for _, tc := range testCases {
 		t.Run(tc.desc, func(t *testing.T) {
 			s := setupWithTmpPath(t, "file", tc.includeFormat, tc.format, nil,
-				func(w http.ResponseWriter, r *http.Request) {
+				func(_ http.ResponseWriter, r *http.Request) {
 					token, err := jwt.ParseWithClaims(r.Header.Get(RewrittenFieldsHeader), &MultipartClaims{}, testhelper.ParseJWT)
 					assert.NoError(t, err)
 
@@ -232,7 +232,7 @@ func TestUploadHandlerAddingMetadata(t *testing.T) {
 
 func TestUploadHandlerTarArtifact(t *testing.T) {
 	s := setupWithTmpPath(t, "file", true, "tar", nil,
-		func(w http.ResponseWriter, r *http.Request) {
+		func(_ http.ResponseWriter, r *http.Request) {
 			token, err := jwt.ParseWithClaims(r.Header.Get(RewrittenFieldsHeader), &MultipartClaims{}, testhelper.ParseJWT)
 			assert.NoError(t, err)
 
diff --git a/workhorse/internal/upload/body_uploader_test.go b/workhorse/internal/upload/body_uploader_test.go
index 503878f22b72b..7bae124a3135a 100644
--- a/workhorse/internal/upload/body_uploader_test.go
+++ b/workhorse/internal/upload/body_uploader_test.go
@@ -78,7 +78,7 @@ func TestRequestBodyErrors(t *testing.T) {
 }
 
 func testNoProxyInvocation(t *testing.T, expectedStatus int, auth PreAuthorizer, preparer Preparer) {
-	proxy := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	proxy := http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {
 		assert.Fail(t, "request proxied upstream")
 	})
 
@@ -153,7 +153,7 @@ type rails struct {
 
 func (r *rails) PreAuthorizeHandler(next api.HandleFunc, _ string) http.Handler {
 	if r.unauthorized {
-		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		return http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 			w.WriteHeader(http.StatusUnauthorized)
 		})
 	}
diff --git a/workhorse/internal/upload/destination/objectstore/object_test.go b/workhorse/internal/upload/destination/objectstore/object_test.go
index cbaa03ccbfb6d..90efefe8566c5 100644
--- a/workhorse/internal/upload/destination/objectstore/object_test.go
+++ b/workhorse/internal/upload/destination/objectstore/object_test.go
@@ -121,7 +121,7 @@ func (e *endlessReader) Read(p []byte) (n int, err error) {
 // This is important for troubleshooting in production.
 func TestObjectUploadBrokenConnection(t *testing.T) {
 	// This test server closes connection immediately
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		hj, ok := w.(http.Hijacker)
 		if !ok {
 			assert.FailNow(t, "webserver doesn't support hijacking")
diff --git a/workhorse/internal/upload/destination/objectstore/test/s3_stub.go b/workhorse/internal/upload/destination/objectstore/test/s3_stub.go
index 109a10b3e8740..87cb69dfc5b75 100644
--- a/workhorse/internal/upload/destination/objectstore/test/s3_stub.go
+++ b/workhorse/internal/upload/destination/objectstore/test/s3_stub.go
@@ -117,7 +117,7 @@ func CheckS3Metadata(t *testing.T, sess *session.Session, config config.S3Config
 func S3ObjectDoesNotExist(t *testing.T, sess *session.Session, config config.S3Config, objectName string) bool {
 	deleted := false
 
-	downloadObject(t, sess, config, objectName, func(tmpfile *os.File, numBytes int64, err error) {
+	downloadObject(t, sess, config, objectName, func(_ *os.File, _ int64, err error) {
 		if err != nil && strings.Contains(err.Error(), "NoSuchKey") {
 			deleted = true
 		}
diff --git a/workhorse/internal/upload/uploads_test.go b/workhorse/internal/upload/uploads_test.go
index 7fd3bb7599241..6ad213999af83 100644
--- a/workhorse/internal/upload/uploads_test.go
+++ b/workhorse/internal/upload/uploads_test.go
@@ -402,7 +402,7 @@ func TestUnauthorizedMultipartHeader(t *testing.T) {
 
 	httpRequest, response := setupMultipleFiles(t)
 
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.WriteHeader(http.StatusUnauthorized)
 	}))
 	defer ts.Close()
@@ -485,7 +485,7 @@ func TestContentDispositionRewrite(t *testing.T) {
 			httpRequest.Header.Set("Content-Type", writer.FormDataContentType())
 
 			var upstreamRequestBuffer bytes.Buffer
-			customHandler := http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
+			customHandler := http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) {
 				r.Write(&upstreamRequestBuffer)
 			})
 
@@ -570,7 +570,7 @@ func TestUploadHandlerRemovingExifCorruptedFile(t *testing.T) {
 	content, err := os.ReadFile("exif/testdata/sample_exif_corrupted.jpg")
 	require.NoError(t, err)
 
-	runUploadTest(t, content, "sample_exif_corrupted.jpg", 422, func(w http.ResponseWriter, r *http.Request) {
+	runUploadTest(t, content, "sample_exif_corrupted.jpg", 422, func(_ http.ResponseWriter, r *http.Request) {
 		err := r.ParseMultipartForm(100000)
 		assert.Error(t, err)
 	})
diff --git a/workhorse/internal/upstream/roundtripper/roundtripper.go b/workhorse/internal/upstream/roundtripper/roundtripper.go
index 19d9e12136da6..1fa09d1d05ae1 100644
--- a/workhorse/internal/upstream/roundtripper/roundtripper.go
+++ b/workhorse/internal/upstream/roundtripper/roundtripper.go
@@ -50,11 +50,11 @@ func newBackendRoundTripper(backend *url.URL, socket string, proxyHeadersTimeout
 	switch {
 	case backend != nil && socket == "":
 		address := mustParseAddress(backend.Host, backend.Scheme)
-		transport.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
+		transport.DialContext = func(ctx context.Context, _, _ string) (net.Conn, error) {
 			return dial(ctx, "tcp", address)
 		}
 	case socket != "":
-		transport.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
+		transport.DialContext = func(ctx context.Context, _, _ string) (net.Conn, error) {
 			return dial(ctx, "unix", socket)
 		}
 	default:
diff --git a/workhorse/internal/upstream/roundtripper/roundtripper_test.go b/workhorse/internal/upstream/roundtripper/roundtripper_test.go
index d3cec80d49bc2..f24bc3c35b456 100644
--- a/workhorse/internal/upstream/roundtripper/roundtripper_test.go
+++ b/workhorse/internal/upstream/roundtripper/roundtripper_test.go
@@ -46,7 +46,7 @@ func TestMustParseAddressPanic(t *testing.T) {
 }
 
 func TestSupportsHTTPBackend(t *testing.T) {
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.WriteHeader(200)
 		fmt.Fprint(w, "successful response")
 	}))
@@ -56,7 +56,7 @@ func TestSupportsHTTPBackend(t *testing.T) {
 }
 
 func TestSupportsHTTPSBackend(t *testing.T) {
-	ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+	ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		w.WriteHeader(200)
 		fmt.Fprint(w, "successful response")
 	}))
diff --git a/workhorse/internal/upstream/routes.go b/workhorse/internal/upstream/routes.go
index 466636097bcb3..9478b0c187766 100644
--- a/workhorse/internal/upstream/routes.go
+++ b/workhorse/internal/upstream/routes.go
@@ -103,7 +103,7 @@ func (u *upstream) observabilityMiddlewares(handler http.Handler, method string,
 	handler = log.AccessLogger(
 		handler,
 		log.WithAccessLogger(u.accessLogger),
-		log.WithExtraFields(func(r *http.Request) log.Fields {
+		log.WithExtraFields(func(_ *http.Request) log.Fields {
 			return log.Fields{
 				"route": regexpStr, // This field matches the `route` label in Prometheus metrics
 			}
-- 
GitLab