【发布时间】:2022-07-05 05:48:07
【问题描述】:
问:如何解决 ireturn 和 nolintlint linters 之间的这种疯狂?
详情:
我有一个带有这个签名的 Golang 函数
func NewClientCredentialsTokenSource(
issuer string,
clientId string,
clientSecret string,
scope []string,
) (oauth2.TokenSource, error) {
当我运行 golangci-lint v1.43.0 时,它会报告
golangci-lint run
oidc/token_utils.go:19:1: NewClientCredentialsTokenSource returns interface (golang.org/x/oauth2.TokenSource) (ireturn)
func NewClientCredentialsTokenSource(
由于该函数只有两个返回参数,因此很容易推断它在抱怨 oauth2.TokenSource 而不是 error。
NewClientCredentialsTokenSource 调用的下游函数返回一个oauth2.TokenSource 的实例,所以我没有要返回的具体类型。我只好返回oauth2.TokenSource接口。
所以我向函数添加了一个 lint 异常,如下所示:
//nolint:ireturn
func NewClientCredentialsTokenSource(
issuer string,
clientId string,
clientSecret string,
scope []string,
) (oauth2.TokenSource, error) {
您认为应该可以解决它,但没有!现在报告了一个新的 lint 问题:
golangci-lint run
oidc/token_utils.go:19:1: directive `//nolint:ireturn` is unused for linter "ireturn" (nolintlint)
//nolint:ireturn
所以现在我在追我的尾巴。 ireturn 抱怨我正在返回一个接口。我为该函数添加了一个例外,只是为了让nolintlint 抱怨我有一个不适用的例外。
男人要做什么?
【问题讨论】:
-
“一个人要做什么?”我只会禁用
nolintlint。这似乎太过分了。
标签: go static-analysis golangci-lint