Go语言的静态代码分析(linter)工具

时间:2011-05-21 20:36:50

标签: static-analysis go

是否有类似Go语言的静态分析工具lintpylint等?据我用谷歌搜索,我没有发现任何相关内容。

我可以在我所在部门担任本科高级项目。我必须确定它以前没有完成。任何帮助表示赞赏。

8 个答案:

答案 0 :(得分:18)

Golint本周新发布:https://github.com/golang/lint

答案 1 :(得分:13)

以下是您可能想要查看的三个相关工具。您将看到如何解析和分析Go源代码。

govet

gofix

gofmt

答案 2 :(得分:9)

有一大堆具有不同输出类型的短绒。一些包括列偏移,一些不包括任何上下文等。

我已经编写了一个名为gometalinter的工具,可以安装,运行并规范我所知道的所有输出:

  • structcheck(github.com/opennota/check/cmd/structcheck)
  • golint(github.com/golang/lint/golint)
  • gotype(code.google.com/p/go.tools/cmd/gotype)
  • errcheck(github.com/kisielk/errcheck)
  • defercheck(github.com/opennota/check/cmd/defercheck)
  • varcheck(github.com/opennota/check/cmd/varcheck)
  • 去兽医

如果有任何短缺,我很乐意添加它们。

还有SublimeLinter plugin

答案 3 :(得分:7)

在最新版本的go(1.3)中,godoc包含一些静态分析功能:

http://golang.org/lib/godoc/analysis/help.html

答案 4 :(得分:7)

如果您想快速了解整个Go项目的状态,即使用各种静态分析工具:

你可以看看:

http://goreportcard.com

(来自http://gophergala.com

它将检查GitHub仓库中这四个工具报告的任何问题。

答案 5 :(得分:2)

尝试megacheck

  

megacheck立即运行staticcheck,gosimple和unused。因为它能够重复使用工作,所以它比单独运行每个工具要快。

带有Visual Studio Code

Go plugin得到了此linting工具的支持。要启用它,请导航到Visual Studio设置并将 go.lintTool 属性设置为 megacheck

{
  "go.lintTool": "megacheck"
}

答案 6 :(得分:1)

2020年更新gometalinter自2019年起已过时(详细信息here

使用 golangci-lint 快速的Go linters奔跑者。

安装tutorials,例如通过Brew:

brew install golangci/tap/golangci-lint
brew upgrade golangci/tap/golangci-lint

检查:

golangci-lint version

从cli运行:

golangci-lint run

要从IDE中运行:将.golangci.yml添加到您的项目中。

.golangci.yml是一个配置文件,允许您仅在文件中配置特定于linters的选项,而不能在命令行中配置

答案 7 :(得分:0)

是的,Go 有多种静态代码分析工具,例如 DeepSourceSonarcloudStaticcheck 等。

如果您正在寻找一种可以轻松与 GitHub/GitLab/Bitbucket 上的项目集成并且可以让您持续分析项目的代码质量问题并自动修复大部分问题的工具,那么 DeepSource 就是回答。它还有像 Gofmt 这样的转换器,可以将代码格式化放在自动驾驶仪上。 它有一个单文件配置,需要几分钟才能开始。此外,您还可以使用它来跟踪测试覆盖率、文档覆盖率等指标。