package(default_visibility = ["//visibility:public"]) load("@io_bazel_rules_go//go:def.bzl", "nogo") load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("//build/linter/staticcheck:def.bzl", "staticcheck_analyzers") bool_flag( name = "with_nogo_flag", build_setting_default = False, visibility = ["//visibility:public"], ) config_setting( name = "with_nogo", flag_values = { ":with_nogo_flag": "true", }, visibility = ["//visibility:public"], ) STATICHECK_ANALYZERS = [ "S1000", "S1001", "S1002", "S1003", "S1004", "S1005", "S1006", "S1007", "S1008", "S1009", "S1010", "S1011", "S1012", "S1016", "S1017", "S1018", "S1019", "S1020", "S1021", "S1023", "S1024", "S1025", "S1028", "S1029", "S1030", "S1031", "S1032", "S1033", "S1034", "S1035", "S1036", "S1037", "S1038", "S1039", "S1040", "SA1019", "SA2000", "SA2001", "SA2003", "SA3000", "SA3001", "SA4009", "SA5000", "SA5001", "SA5002", "SA5003", "SA5004", "SA5005", "SA5007", "SA5008", "SA5009", "SA5010", #"SA5011", "SA5012", "SA6000", "SA6001", "SA6005", "U1000", ] nogo( name = "tidb_nogo", config = ":nogo_config.json", visibility = ["//visibility:public"], # must have public visibility deps = [ "@org_golang_x_tools//go/analysis/passes/asmdecl:go_default_library", "@org_golang_x_tools//go/analysis/passes/assign:go_default_library", "@org_golang_x_tools//go/analysis/passes/atomic:go_default_library", "@org_golang_x_tools//go/analysis/passes/atomicalign:go_default_library", "@org_golang_x_tools//go/analysis/passes/bools:go_default_library", "@org_golang_x_tools//go/analysis/passes/buildssa:go_default_library", "@org_golang_x_tools//go/analysis/passes/buildtag:go_default_library", # https://github.com/bazelbuild/rules_go/issues/2396 # "@org_golang_x_tools//go/analysis/passes/cgocall:go_default_library", "@org_golang_x_tools//go/analysis/passes/composite:go_default_library", "@org_golang_x_tools//go/analysis/passes/copylock:go_default_library", "@org_golang_x_tools//go/analysis/passes/ctrlflow:go_default_library", "@org_golang_x_tools//go/analysis/passes/deepequalerrors:go_default_library", "@org_golang_x_tools//go/analysis/passes/errorsas:go_default_library", "@org_golang_x_tools//go/analysis/passes/fieldalignment:go_default_library", "@org_golang_x_tools//go/analysis/passes/findcall:go_default_library", "@org_golang_x_tools//go/analysis/passes/httpresponse:go_default_library", "@org_golang_x_tools//go/analysis/passes/ifaceassert:go_default_library", "@org_golang_x_tools//go/analysis/passes/inspect:go_default_library", "@org_golang_x_tools//go/analysis/passes/loopclosure:go_default_library", "@org_golang_x_tools//go/analysis/passes/lostcancel:go_default_library", "@org_golang_x_tools//go/analysis/passes/nilfunc:go_default_library", "@org_golang_x_tools//go/analysis/passes/nilness:go_default_library", "@org_golang_x_tools//go/analysis/passes/pkgfact:go_default_library", "@org_golang_x_tools//go/analysis/passes/printf:go_default_library", "@org_golang_x_tools//go/analysis/passes/shift:go_default_library", "@org_golang_x_tools//go/analysis/passes/sortslice:go_default_library", "@org_golang_x_tools//go/analysis/passes/stdmethods:go_default_library", "@org_golang_x_tools//go/analysis/passes/stringintconv:go_default_library", "@org_golang_x_tools//go/analysis/passes/structtag:go_default_library", "@org_golang_x_tools//go/analysis/passes/testinggoroutine:go_default_library", "@org_golang_x_tools//go/analysis/passes/tests:go_default_library", "@org_golang_x_tools//go/analysis/passes/unmarshal:go_default_library", "@org_golang_x_tools//go/analysis/passes/unreachable:go_default_library", "@org_golang_x_tools//go/analysis/passes/unsafeptr:go_default_library", "@org_golang_x_tools//go/analysis/passes/unusedresult:go_default_library", "//build/linter/asciicheck:asciicheck", "//build/linter/bodyclose:bodyclose", "//build/linter/durationcheck:durationcheck", "//build/linter/exportloopref:exportloopref", "//build/linter/forcetypeassert:forcetypeassert", "//build/linter/gofmt:gofmt", "//build/linter/gci:gci", "//build/linter/gosec:gosec", "//build/linter/ineffassign:ineffassign", "//build/linter/makezero:makezero", "//build/linter/misspell:misspell", "//build/linter/noloopclosure:noloopclosure", "//build/linter/prealloc:prealloc", "//build/linter/predeclared:predeclared", "//build/linter/unconvert:unconvert", "//build/linter/rowserrcheck:rowserrcheck", ] + staticcheck_analyzers(STATICHECK_ANALYZERS) + select({ "//build:with_nogo": [ "//build/linter/filepermission:filepermission", "//build/linter/allrevive:allrevive", "//build/linter/errcheck:errcheck", "//build/linter/revive:revive", ], "//conditions:default": [], }), )