load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@io_bazel_rules_go//go:def.bzl", "nogo")
load("//build/analysis/staticcheck:def.bzl", ALL_STATICCHECK_ANALYZERS = "ANALYZER_NAMES", filtered_staticcheck_analyzers = "filtered_analyzers")
load(":def.bzl", "build_nogo_config", "exclude_from_checks", "exclude_from_external")

# NOGO_PASSES contains all enabled analyzers that nogo should execute.
NOGO_PASSES = []

# These deps enable the analyses equivalent to running `go vet`.
# Passing vet = True enables only a tiny subset of these (the ones
# that are always correct).
# You can see the what `go vet` does by running `go doc cmd/vet`.
NOGO_PASSES += [
    "@org_golang_x_tools//go/analysis/passes/appends",
    "@org_golang_x_tools//go/analysis/passes/asmdecl",
    "@org_golang_x_tools//go/analysis/passes/assign",
    "@org_golang_x_tools//go/analysis/passes/atomic",
    "@org_golang_x_tools//go/analysis/passes/atomicalign",
    "@org_golang_x_tools//go/analysis/passes/bools",
    "@org_golang_x_tools//go/analysis/passes/buildssa",
    "@org_golang_x_tools//go/analysis/passes/buildtag",
    # Disable cgocall because it fails processing com_github_mattn_go_sqlite3 before exclusions are applied
    #"@org_golang_x_tools//go/analysis/passes/cgocall",
    "@org_golang_x_tools//go/analysis/passes/composite",
    "@org_golang_x_tools//go/analysis/passes/copylock",
    "@org_golang_x_tools//go/analysis/passes/deepequalerrors",
    "@org_golang_x_tools//go/analysis/passes/defers",
    "@org_golang_x_tools//go/analysis/passes/directive",
    "@org_golang_x_tools//go/analysis/passes/errorsas",
    # Disabled as there is no real benefit from it.
    #"@org_golang_x_tools//go/analysis/passes/fieldalignment",
    "@org_golang_x_tools//go/analysis/passes/framepointer",
    "@org_golang_x_tools//go/analysis/passes/httpmux",
    "@org_golang_x_tools//go/analysis/passes/httpresponse",
    "@org_golang_x_tools//go/analysis/passes/ifaceassert",
    # Disabled because we are using Go 1.22
    # https://go.dev/blog/loopvar-preview
    #"@org_golang_x_tools//go/analysis/passes/loopclosure",
    "@org_golang_x_tools//go/analysis/passes/lostcancel",
    "@org_golang_x_tools//go/analysis/passes/nilfunc",
    "@org_golang_x_tools//go/analysis/passes/nilness",
    "@org_golang_x_tools//go/analysis/passes/printf",
    "@org_golang_x_tools//go/analysis/passes/reflectvaluecompare",
    # Disabled because of too many false positives
    # "@org_golang_x_tools//go/analysis/passes/shadow",
    "@org_golang_x_tools//go/analysis/passes/shift",
    "@org_golang_x_tools//go/analysis/passes/sigchanyzer",
    "@org_golang_x_tools//go/analysis/passes/slog",
    "@org_golang_x_tools//go/analysis/passes/sortslice",
    "@org_golang_x_tools//go/analysis/passes/stdmethods",
    "@org_golang_x_tools//go/analysis/passes/stringintconv",
    "@org_golang_x_tools//go/analysis/passes/structtag",
    "@org_golang_x_tools//go/analysis/passes/testinggoroutine",
    "@org_golang_x_tools//go/analysis/passes/tests",
    "@org_golang_x_tools//go/analysis/passes/timeformat",
    "@org_golang_x_tools//go/analysis/passes/unmarshal",
    "@org_golang_x_tools//go/analysis/passes/unreachable",
    "@org_golang_x_tools//go/analysis/passes/unsafeptr",
    "@org_golang_x_tools//go/analysis/passes/unusedresult",
    "@org_golang_x_tools//go/analysis/passes/unusedwrite",
]

# Append some passes provided by CockroachDB.
NOGO_PASSES += [
    "//third_party/com_github_cockroachdb_cockroach/errcmp",
    "//third_party/com_github_cockroachdb_cockroach/errwrap",
    "//third_party/com_github_cockroachdb_cockroach/hash",
    "//third_party/com_github_cockroachdb_cockroach/nilness",
    "//third_party/com_github_cockroachdb_cockroach/returnerrcheck",
    "//third_party/com_github_cockroachdb_cockroach/unconvert",
]

# Combine all staticcheck analyzers with a list
# of all globally disabled staticcheck analyzers
# and append them to the nogo passes.
NOGO_PASSES += filtered_staticcheck_analyzers([
    "ST1000",  # at least one file in a package should have a package comment
    "ST1003",  # should not use ALL_CAPS in Go names; use CamelCase instead
    "QF1006",  # could lift into loop condition
    "QF1003",  # could use tagged switch
    "QF1008",  # Omit embedded fields from selector expression
])

NOGO_PASSES += [
    # This analyzer ensures that all comment lines are <= 80 characters long
    # in Go source. This is in line with general practices around the Go
    # community, where code lines can be as long as needed (and is expected
    # to be soft-reflowable by text editors), but comments are kept at a
    # 'standard' 80 characters long, as prose within comment blocks does not
    # soft-reflow well.
    "@com_github_corverroos_commentwrap//:go_default_library",
    "//build/analysis/gocheckcompilerdirectives",
    "//build/analysis/noioutil",
    "//build/analysis/importsort",
    "//build/analysis/gofmt",
    "//build/analysis/haslicense",
]

NOGO_CONFIG = [
    exclude_from_checks("dev_gvisor_gvisor", "shift", "unsafeptr"),
    exclude_from_checks("com_github_modern_go_reflect2", "unsafeptr"),
    exclude_from_checks("io_k8s_sigs_structured_merge_diff", "unsafeptr"),
    exclude_from_checks("com_github_go_delve_delve", "unsafeptr"),
    exclude_from_checks("com_github_mailru_easyjson/jlexer", "unsafeptr"),
    exclude_from_checks("com_github_cilium_ebpf", "unsafeptr"),
    exclude_from_checks("net_starlark_go", "unsafeptr"),
    exclude_from_checks("org_golang_x_sys", "unsafeptr"),
    exclude_from_checks("com_github_pingcap_tidb_parser", "unsafeptr"),
    exclude_from_checks("com_github_dennwc_btrfs", "unsafeptr"),
    exclude_from_checks("com_github_u_root_uio", "deepequalerrors"),
    exclude_from_checks("com_github_sbezverk_nfproxy", "defers"),

    # All analyzers that should be disabled for external, generated or cgo code.
    exclude_from_external(ALL_STATICCHECK_ANALYZERS),
    exclude_from_external([
        "commentwrap",
        "gocheckcompilerdirectives",
        "noioutil",
        "importsort",
        "gofmt",
        "haslicense",
    ]),
    exclude_from_external([
        "exclude_files",
        "unreachable",
        "unusedwrite",
        "composites",
        "stdmethods",
        "reflectvaluecompare",
        "unconvert",
        "errwrap",
        "ruleguard",
        "returnerrcheck",
        "hash",
        "errcmp",
        "unparam",
        "nilness",
        "printf",
        "copylocks",
        "lostcancel",
    ]),

    # Additional custom entries.
    {
        "unsafeptr": {
            "exclude_files": {
                "sqlite3.*go": "third_party",
            },
        },
        "haslicense": {
            "exclude_files": {
                "third_party/": "third_party",
            },
        },
    },
]

write_file(
    name = "nogo_config",
    out = "nogo_config.json",
    content = [json.encode_indent(build_nogo_config(NOGO_CONFIG))],
)

nogo(
    name = "nogo",
    config = ":nogo_config",
    visibility = ["//visibility:public"],
    deps = NOGO_PASSES,
)
