Есть какой-нибудь способ проверить наличие необработанных ошибок в программе Go?

#go

#Вперед

Вопрос:

Рассмотрим следующее:

 package main

import (
    "errors"
    "fmt"
)

func foo() error {
    return errors.New("Danger!")
}

func main() {
    foo();
    fmt.Println("I don't have a care in the world!")
}
  

Было бы неплохо, если бы существовал простой способ увидеть, что возможные ошибки из foo () не обрабатываются. Есть ли в Go встроенный способ проверки программ / исходных файлов на наличие ошибок, с которыми ничего не было сделано?

Ответ №1:

В Go нет встроенного способа сделать это, но есть сторонний инструмент от Kamil Kisiel, который это делает. Просто go get github.com/kisielk/errcheck затем запустите bin/errcheck your/import/path из своего $GOPATH , и он выдаст список вызовов с игнорируемыми ошибками. (Я только что попробовал это в проекте и, хм, возможно, я не настолько надежен в этом на 100%, как я думал.)

Если вам это нравится, вам также могут понравиться проверки go vet и пакет lint, используемый в Google для проверки стиля.

Комментарии:

1. На самом деле, bin / errcheck никогда не должен находиться под $ GOROOT . Это должно быть в $ GOPATH.

Ответ №2:

Вы можете использовать errcheck:

 $ errcheck github.com/your/package
  

Это даст вам знать, когда вы игнорируете возвращенные ошибки. Я бы сказал, что это должно быть в основном редко, если вы используете приличный редактор (который показывает вам сигнатуры функций).