# uber-go/nilaway

Static analysis tool to detect potential nil panics in Go code

Repository: https://github.com/uber-go/nilaway
Canonical: https://ross.abutalabs.com/products/nilaway
Language: Go
License: Apache-2.0
License Family: permissive
Topics: go, static-analysis, nilability, nilability-analysis, nil-pointer
Last push: 2026-08-20T21:54:36+00:00

## Health v2 (maintenance only)
Score: 73/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 98, release rhythm 35, longevity 82
- inputs: {"age_days": 1149, "days_push": 13, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 3900, forks 95 (observed 2026-08-28T04:08:28.582766+00:00)

## What it is
NilAway is a static analysis tool from Uber that detects potential nil pointer panics in Go code at compile time rather than runtime. It uses automated inference (no annotations required) to track nil flows within and across packages, and integrates with golangci-lint, nogo, or runs as a standalone checker via the go/analysis framework.

## Use cases
- catch nil pointer panics in go code before they hit production
- detect nil dereference bugs at compile time
- static analysis for nil safety in go
- lint go code for nilability issues without annotations
- find null pointer errors in a large golang codebase
- add nil panic checking to golangci-lint

## When to choose
- you maintain a large Go codebase and want fast, scalable nilness checking with under 5% build-time overhead
- you want fully automated nilability analysis without writing annotations
- you already use golangci-lint or nogo and want to add nil panic detection to your pipeline

## When to avoid
- you need zero false positives - the tool is under active development and false positives and breaking changes can occur
- you want an exhaustive guarantee of catching every possible nil panic - it deliberately balances usefulness against overhead
- you are not working in Go

## Facets
- artifact type: cli-tool
- maturity: active
- function: linter, developer-tools
- domain: developer-tools, programming-languages
- platform: go, cli
- tags: static-analysis, nilability, nil-pointer-detection, panic-prevention, null-safety, golangci-lint, nogo, go-compiler-analysis, code-quality, uber

## Member repositories
- uber-go/nilaway (main) score 73

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:28.582766+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:25:33.559695+00:00, confidence not recorded.
  - readme: https://github.com/uber-go/nilaway (fetched 2026-08-28T04:08:28.582766+00:00, sha 5b58ff4c2927)
- Data as of 2026-08-30T08:39:29.467469+00:00.
