このインスペクションは、すべての関数呼び出しを考慮して潜在的な nil 逆参照を検出します。 この分析は手続きをまたがって行われ、異なるパッケージ間を含むプロジェクト全体の呼び出しを考慮します。

例:


package a

func CreateUser(name string) *User {
  if isValid(name) {
    return &User{Name: name}
  }
  return nil
}

package main

func main() {
	user := CreateUser("NilDereference")
	print(user.Name) // 潜在的な nil 逆参照
}

上記の例の userUser 構造体へのポインターになっていますが、CreateUsernil を返す可能性があるため、 nil になることがあります。 usernil かどうかを確認せずに user を逆参照して Name にアクセスしようとしているため、実行時エラーが発生します。