go 代码检测

臭大佬 2024-01-04 19:00:20 872
Go 
简介 go 代码检测

Go 代码检测通常指的是对代码进行静态分析,以找出潜在的错误、不符合规范的编码习惯以及性能上的优化点。

Go Vet

已包含在 Go 标准库中,无需额外安装。go vet 是 Go 语言提供的静态代码分析工具,用于检查 Go 源代码中潜在的常见错误和可疑构造。它旨在捕获那些编译器不会报错但可能导致程序运行时出现问题的代码片段。

使用

使用方式:go vet [package] 或者 go vet [file.go]

go vet ./...

NilAway

NilAway 是一个静态分析工具,旨在帮助开发人员通过在编译时而不是运行时捕获它们来避免生产中的 nil 恐慌。NilAway 类似于标准的 nilness 分析器,但是,它采用了更复杂和强大的静态分析技术来跟踪包内的 nil 流以及跨包的 nil 流,并报告错误,为用户提供 nilness 流以便于调试。
项目地址:nilaway

使用

使用前先安装

go install go.uber.org/nilaway/cmd/nilaway@latest

扫描目录下的所有文件

nilaway ./...

Go Vet 和 NilAway 一起使用能检查出绝大部分问题,如果还觉得不够的话,可以使用下面这些工具.

其他

Golint

安装:go get -u golang.org/x/lint/golint
使用方式:golint [package] 或者 golint [file.go]

Staticcheck

安装:go install honnef.co/go/tools/cmd/staticcheck@latest
使用方式:staticcheck [package] 或者 staticcheck [file.go]

Errcheck

安装:go get -u github.com/kisielk/errcheck
使用方式:errcheck [package] 或者 errcheck [file.go]

Deadcode

安装:go get -u github.com/remyoudompheng/go-misc/deadcode
使用方式:deadcode [package] 或者 deadcode [file.go]

Gosec

安装:go get -u github.com/securego/gosec/v2/cmd/gosec
使用方式:gosec [directory]

Gocyclo

安装:go get -u github.com/fzipp/gocyclo
使用方式:gocyclo -over [threshold] [file.go]

Go Meta Linter (Gometalinter)

安装:go get -u gopkg.in/alecthomas/gometalinter.v2 && gometalinter.v2 --install
使用方式:gometalinter.v2 [options] [packages]

Revive

安装:go get -u github.com/mgechev/revive
使用方式:revive [args]