第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang linter 總是抱怨

golang linter 總是抱怨

Go
侃侃爾雅 2022-12-19 10:50:48
問:如何解決lintersireturn和nolintlintlinters 之間的瘋狂問題?細(xì)節(jié):我有一個帶有這個簽名的 Golang 函數(shù)func NewClientCredentialsTokenSource(    issuer string,    clientId string,    clientSecret string,    scope []string,) (oauth2.TokenSource, error) {當(dāng)我運行 golangci-lint v1.43.0 它報告golangci-lint runoidc/token_utils.go:19:1: NewClientCredentialsTokenSource returns interface (golang.org/x/oauth2.TokenSource) (ireturn)func NewClientCredentialsTokenSource(由于該函數(shù)只有兩個返回參數(shù),因此很容易推斷出它在抱怨oauth2.TokenSource而不是在抱怨error。調(diào)用的下游函數(shù)NewClientCredentialsTokenSource返回一個實例,oauth2.TokenSource所以我沒有要返回的具體類型。沒辦法,只好返回oauth2.TokenSource接口。所以我向函數(shù)添加了一個 lint 異常,如下所示://nolint:ireturnfunc NewClientCredentialsTokenSource(    issuer string,    clientId string,    clientSecret string,    scope []string,) (oauth2.TokenSource, error) {你會認(rèn)為應(yīng)該解決它但不是!現(xiàn)在報告了一個新的 lint 問題:golangci-lint runoidc/token_utils.go:19:1: directive `//nolint:ireturn` is unused for linter "ireturn" (nolintlint)//nolint:ireturn所以現(xiàn)在我在追我的尾巴。ireturn抱怨我正在返回一個界面。我為該函數(shù)添加了一個例外只是nolintlint抱怨我有一個不適用的例外。男人要做什么?
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊

我嘗試按照 Nico Huysamen 的建議添加允許規(guī)則,但這打開了一罐蠕蟲。最后我還是想相信ireturnlinter,還不想禁用它。我認(rèn)為解決此問題的最簡潔方法是為兩個 linter 添加一個異常,ireturn如下nolintlint所示:


//nolint:nolintlint,ireturn

func NewClientCredentialsTokenSource(

    issuer string,

    clientId string,

    clientSecret string,

    scope []string,

) (oauth2.TokenSource, error) {

2022 年 5 月 25 日更新:


也許更好的解決方案如下所示。由于某種原因,ireturn異常必須進(jìn)入函數(shù)簽名。


func NewPasswordGrantTokenSource( //nolint:ireturn

    issuer string,

    clientId string,

    clientSecret string,

    username string,

    password string,

    scope []string,

) (oauth2.TokenSource, error) {


查看完整回答
反對 回復(fù) 2022-12-19
?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗 獲得超1個贊

.golangci.yml您可以如上所述允許這樣做,但由于它取代了標(biāo)準(zhǔn)的 defaults,您也需要包含它們,因此您需要:


  ireturn:

    # ireturn allows using `allow` and `reject` settings at the same time.

    # Both settings are lists of the keywords and regular expressions matched to interface or package names.

    # keywords:

    # - `empty` for `interface{}`

    # - `error` for errors

    # - `stdlib` for standard library

    # - `anon` for anonymous interfaces


    # By default, it allows using errors, empty interfaces, anonymous interfaces,

    # and interfaces provided by the standard library.

    allow:

      - anon

      - error

      - empty

      - stdlib

      # You can specify idiomatic endings for interface

      - (or|er)$

      # Your custom interfaces go here:

      - golang.org/x/oauth2.TokenSource


查看完整回答
反對 回復(fù) 2022-12-19
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

您可以將接口添加到ireturn的允許接口列表中。


ireturn --allow="golang.org/x/oauth2.TokenSource"

或通過中的linter-settings部分.golangci.yml


linters-settings:

  ireturn:

    allow:

      - golang.org/x/oauth2.TokenSource


查看完整回答
反對 回復(fù) 2022-12-19
  • 3 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號