iT邦幫忙

0

Day1 - [Golang] 總是上dev,prod才發現的nil pointer問題

  • 分享至 

  • xImage
  •  

廢話前言

之前很常遇到,開發了老半天後端程式,終於上了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問題

  1. ./nilaway.go
    初始化了原生的 Analyzer,並且裡面放了自己的實作
var Analyzer = &analysis.Analyzer{
	Name:      "nilaway",
	Doc:       _doc,
	Run:       run,
	FactTypes: []analysis.Fact{},
	Requires:  []*analysis.Analyzer{accumulation.Analyzer},
}
  1. ./cmd/nilaway/main.go
func main() {
	singlechecker.Main(nilaway.Analyzer)
}

使用了上面的 Analyzer

第一天就這樣拉~~ 下次再繼續看 package accumulation


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言