亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

golint 執行不返回任何內容

golint 執行不返回任何內容

Go
海綿寶寶撒 2022-04-26 15:28:41
我正在為exercism.io 編寫練習。我的導師說我的代碼應該由一些 go lint 來檢查,他建議我嘗試 golint 和 golangci-lint。我通過安裝 golintgo get -u golang.org/x/lint/golint并啟動它:rustam:hamming $ golint hamming.go rustam:hamming $ 但它什么也不返回。此外,如果我使用 golangci-lint 也會得到相同的結果——什么都沒有。我不知道為什么。有我的代碼,充滿了風格錯誤:// Package hamming is Exercism.io exercisepackage hammingimport "errors"// Distance — Calculating Hamming Distance for two DNA strandsfunc Distance(a, b string) (int, error) {    if len(a) != len(b) {        return 0, errors.New("Strands should be equal size")    }    if len(a) == 0 || len(b) == 0 {        return 0, nil    }    var hd int = 0    for i := 0; i < len(a); i++ {        if a[i] != b[i] {            hd++        }    }    return hd, nil}還有我的 go env:rustam:hamming $ go envGO111MODULE=""GOARCH="amd64"GOBIN="/Users/rustam/go/bin"GOCACHE="/Users/rustam/Library/Caches/go-build"GOENV="/Users/rustam/Library/Application Support/go/env"GOEXE=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GONOPROXY=""GONOSUMDB=""GOOS="darwin"GOPATH="/Users/rustam/go"GOPRIVATE=""GOPROXY="https://proxy.golang.org,direct"GOROOT="/usr/local/Cellar/go/1.13.4/libexec"GOSUMDB="sum.golang.org"GOTMPDIR=""GOTOOLDIR="/usr/local/Cellar/go/1.13.4/libexec/pkg/tool/darwin_amd64"GCCGO="gccgo"AR="ar"CC="clang"CXX="clang++"CGO_ENABLED="1"GOMOD=""CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONFIG="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/4j/4rjv22zs1pb68wssv5gn2wfw0000gn/T/go-build148685464=/tmp/go-build -gno-record-gcc-switches -fno-common"和我的 ~/.bash_profileexport GOPATH=$HOME/goexport GOBIN=$HOME/go/binexport PATH=$PATH:$GOPATH/bin如果您能指出我的錯誤,我將不勝感激。
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

在 Go 中,最少的檢查可能是 Go 工具go fmt、、、go vetgolint。

這是一個最小的、可重現的示例(請參閱如何創建一個最小的、可重現的示例),它表明您的hamming.go程序通過了所有當前檢查。

命令 golint

$ go version

go version devel +075c20cea8 Thu Dec 26 13:53:31 2019 +0000 linux/amd64

$ go fmt hamming.go

$ go vet hamming.go

$ go get -u golang.org/x/lint/golint

go: downloading golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f

go: found golang.org/x/lint/golint in golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f

go: downloading golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f

go: golang.org/x/tools upgrade => v0.0.0-20191226230302-065ed046f11a

go: downloading golang.org/x/tools v0.0.0-20191226230302-065ed046f11a

$ golint hamming.go

$ cat hamming.go

// Package hamming is Exercism.io exercise

package hamming


import "errors"


// Distance — Calculating Hamming Distance for two DNA strands

func Distance(a, b string) (int, error) {


    if len(a) != len(b) {

        return 0, errors.New("Strands should be equal size")

    }


    if len(a) == 0 || len(b) == 0 {

        return 0, nil

    }


    var hd int = 0


    for i := 0; i < len(a); i++ {

        if a[i] != b[i] {

            hd++

        }

    }


    return hd, nil

}

$

評論:我的導師發送了他的 linter 執行,并且有一些消息,例如


$ golint hamming.go hamming.go:17:15: 

should drop = 0 from declaration of var hd; it is the zero value 

– 銹跡斑斑


您的導師正在使用舊版本的golint. 對于當前版本,它們應該運行


go get -u golang.org/x/lint/golint

您的導師是否解釋了 的有限目的golint?例如,“Golint 并不完美,同時存在誤報和誤報。不要將其輸出視為黃金標準?!?/p>

Golint 是 Go 源代碼的 linter。

目的

Golint 與 gofmt 不同。Gofmt 重新格式化 Go 源代碼,而 golint 打印出樣式錯誤。

Golint 與 govet 不同。Govet 關注正確性,而 golint 關注編碼風格。Golint 在 Google 中使用,它尋求與開源 Go 項目的公認風格相匹配。

golint 提出的建議正是:建議。Golint 并不完美,同時存在誤報和誤報。不要將其輸出視為黃金標準。我們不會添加編譯指示或其他旋鈕來抑制特定警告,因此不要期望或要求代碼完全“無 lint”。簡而言之,這個工具不是而且永遠不會足夠值得信賴,以至于它的建議可以自動執行,例如作為構建過程的一部分。Golint 為 Effective Go 和 CodeReviewComments wiki 頁面中列出的許多機械檢查項目提供建議。


這是我的解決方案嘗試:

package hamming


import "errors"


// Distance returns the Hamming distance for two DNA strings of equal length.

// DNA strings are constructed from the alphabet {A, C, G, T}.

func Distance(a, b string) (int, error) {

    if len(a) != len(b) {

        return 0, errors.New("strings should be of equal length")

    }


    d := 0

    for i := 0; i < len(a); i++ {

        if a[i] != b[i] {

            d++

        }

    }

    return d, nil

}


查看完整回答
反對 回復 2022-04-26
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

您應該定義置信水平(min_confidence參數)。


例如:golint -min_confidence 0 your_file_to_test


查看 golint 用法:


golint -h

Usage of golint:

    golint [flags] # runs on package in current directory

    golint [flags] [packages]

    golint [flags] [directories] # where a '/...' suffix includes all sub-directories

    golint [flags] [files] # all must belong to a single package

Flags:

  -min_confidence float

        minimum confidence of a problem to print it (default 0.8)

  -set_exit_status

        set exit status to 1 if any issues are found


查看完整回答
反對 回復 2022-04-26
  • 2 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號