diff --git a/BUILD.bazel b/BUILD.bazel index d9b5ab7f6ac..491abeb38b9 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -208,6 +208,7 @@ nogo( visibility = ["//visibility:public"], # must have public visibility deps = [ "//dev/linters/bodyclose", + "//dev/linters/exportloopref", "//dev/linters/forbidigo", "//dev/linters/gocritic", "//dev/linters/ineffassign", diff --git a/dev/linters/exportloopref/BUILD.bazel b/dev/linters/exportloopref/BUILD.bazel new file mode 100644 index 00000000000..be18b7c089b --- /dev/null +++ b/dev/linters/exportloopref/BUILD.bazel @@ -0,0 +1,9 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "exportloopref", + srcs = ["exportloopref.go"], + importpath = "github.com/sourcegraph/sourcegraph/dev/linters/exportloopref", + visibility = ["//visibility:public"], + deps = ["@com_github_kyoh86_exportloopref//:go_default_library"], +) diff --git a/dev/linters/exportloopref/exportloopref.go b/dev/linters/exportloopref/exportloopref.go new file mode 100644 index 00000000000..8dfe1f1e562 --- /dev/null +++ b/dev/linters/exportloopref/exportloopref.go @@ -0,0 +1,7 @@ +package exportloopref + +import ( + "github.com/kyoh86/exportloopref" +) + +var Analyzer = exportloopref.Analyzer diff --git a/dev/linters/go.mod b/dev/linters/go.mod index 349493adac2..12b8d6b1209 100644 --- a/dev/linters/go.mod +++ b/dev/linters/go.mod @@ -6,6 +6,7 @@ require ( github.com/ashanbrown/forbidigo v1.5.1 github.com/go-critic/go-critic v0.6.7 github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 + github.com/kyoh86/exportloopref v0.1.11 github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e golang.org/x/tools v0.6.0 ) diff --git a/dev/linters/go.sum b/dev/linters/go.sum index ec7fc48def7..08486462499 100644 --- a/dev/linters/go.sum +++ b/dev/linters/go.sum @@ -39,6 +39,8 @@ github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4 h1:d2/ github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= diff --git a/linter_deps.bzl b/linter_deps.bzl index b764c4b6927..c7a0016a749 100644 --- a/linter_deps.bzl +++ b/linter_deps.bzl @@ -147,3 +147,10 @@ def linter_dependencies(): version = "v0.0.0-20230203172020-98cc5a0785f9", sum = "h1:6WHiuFL9FNjg8RljAaT7FNUuKDbvMqS1i5cr2OE2sLQ=", ) + + go_repository( + name = "com_github_kyoh86_exportloopref", + importpath = "github.com/kyoh86/exportloopref", + version = "v0.1.11", + sum = "h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=", + ) diff --git a/nogo_config.json b/nogo_config.json index dcbf91c775f..d237c2f18e6 100644 --- a/nogo_config.json +++ b/nogo_config.json @@ -5,7 +5,8 @@ "rules_go.*/*": "ignore rules_go working directory", "external/*": "no need to vet third party code", ".*_generated\\.go$": "ignore generated code", - ".*_pb\\.go$": "ignore protobuff generated code" + ".*_pb\\.go$": "ignore protobuff generated code", + "docker-images/*": "ignore all code under docker-images" } }, "bodyclose": { @@ -37,5 +38,14 @@ ".*_pb\\.go$": "ignore protobuff generated code", "dev/buildchecker/slack.go": "ignore false positive" } + }, + "exportloopref": { + "exclude_files": { + "lib/batches/env/var.go": "false positive", + "rules_go.*/*": "ignore rules_go working directory", + "external/*": "no need to vet third party code", + ".*_generated\\.go$": "ignore generated code", + ".*_pb\\.go$": "ignore protobuff generated code" + } } }