이 검사는 모든 함수 호출을 고려하여 잠재적인 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인지 확인하지 않고 Name에 액세스하기 위해 user을 역참조하려고 하면 런타임 오류가 발생합니다.