废话前言
之前很常遇到,开发了老半天后端程式,终于上了dev,结果打没几下api,gcp的alerting就开始狂响...
然后就会看到一片红色的 panic: runtime error: invalid memory address or nil pointer dereference
这时候总会想... 如果能有工具帮我检查该有多好呢?
上週假日开始练习没事就看看科技龙头们的github都是怎么写的,来多多训练自己的思维跟手感
意外的在 uber 的repo中发现了好货 https://github.com/uber-go/nilaway
动手try
二话不说来玩玩看吧
首先安装 go install go.uber.org/nilaway/cmd/nilaway@latest
404... 囧 看起来社群已经有反应这个问题,毕竟也是上週刚开始的专案,就再等等啰
微剖析
根据官方的readme看起来,是基于原生的 nilness check去进行优化,解决一些function间呼叫造成的间接 nil pointer dereference问题
./nilaway.go初始化了原生的 Analyzer,并且里面放了自己的实作
var Analyzer = &analysis.Analyzer{Name: "nilaway",Doc: _doc,Run: run,FactTypes: []analysis.Fact{},Requires: []*analysis.Analyzer{accumulation.Analyzer},}
./cmd/nilaway/main.gofunc main() {singlechecker.Main(nilaway.Analyzer)}
使用了上面的 Analyzer
第一天就这样拉~~ 下次再继续看 package accumulation