package main
import "os"
func main(){
f, _ := os.Open("main.go")
defer f.Close()
}
上面代码有什么问题吗?
当我们执行go build
的时候,发现并没有报错。
简介
gometalinter工具可以检查Go代码中一些隐蔽的错误。go的编译器有的时候仅仅是能检查语法层面的错误,而不能检测出逻辑的错误。所以就需要一些额外的错误检查工具来进行代码检测。
地址
github.com/alecthomas/gometalinter
安装方式
go get -u -x github.com/alecthomas/gometalinter
可以看到下载的内容,以及更新安装包。
root@000d3fada0b3:~/go/src# gometalinter --install
Installing:
deadcode
dupl
errcheck
gochecknoglobals
gochecknoinits
goconst
gocyclo
goimports
golint
gosec
gosimple
gotype
gotypex
ineffassign
interfacer
lll
maligned
megacheck
misspell
nakedret
safesql
staticcheck
structcheck
unconvert
unparam
unused
varcheck
上面的内容都是该工具中包含的插件。我们在代码目录执行该工具
root@000d3fada0b3:~/go/src# gometalinter
main.go:7:15:warning: error return value not checked (defer f.Close()) (errcheck)
会提示你,第7行错误返回没有检查。
有些时候这些工具会减少你写代码的出错概率。
网友评论