Slide 16
Slide 16 text
Linterなきルールはルールではない
■ time.Now関数を呼び出している箇所を見つける
func run(pass *analysis.Pass) (any, error) {
in := pass.ResultOf[ssainspect.Analyzer].(*ssainspect.Inspector)
timenow, _ := analysisutil.ObjectOf(pass, "time", "Now").(*types.Func)
if timenow == nil { return nil, nil }
for in.Next() {
c := in.Cursor()
if analysisutil.Called(c.Instr, nil, timenow) {
pass.Reportf(c.Instr.Pos(), "do not use %s, use ctxtime.Now",
timenow.FullName())
}
}
return nil, nil
}