Инструмент статического анализа кода (линтер) для языка Go - PullRequest
21 голосов
/ 22 мая 2011

Существует ли инструмент статического анализа для языка Go - как lint, pylint и т. Д.?Насколько я гуглил, я не нашел ничего связанного.

Я могу сделать это в качестве старшего проекта старшекурсника в моем отделе.Я должен быть уверен, что это не было сделано раньше.Любая помощь приветствуется.

Ответы [ 6 ]

18 голосов
/ 04 июня 2013

Golint недавно выпущен на этой неделе: https://github.com/golang/lint

13 голосов
/ 22 мая 2011

Вот три связанных инструмента, которые вы можете посмотреть.Вы увидите, как анализировать и анализировать исходный код Go.

govet

gofix

gofmt

9 голосов
/ 11 декабря 2014

Существует целая куча линтеров с различными типами вывода. Некоторые включают смещения столбцов, некоторые не включают никакого контекста и т. Д.

Я написал инструмент под названием 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 .

7 голосов
/ 23 марта 2015

Если вы хотите быстро просмотреть состояние всего проекта Go, т. Е. С помощью различных инструментов статического анализа:

Вы можете проверить:

http://goreportcard.com

http://gophergala.com)

Он проверит наличие проблем, обнаруженных этими четырьмя инструментами в репозитории GitHub.

7 голосов
/ 23 июня 2014

В последней версии go (1.3) godoc включает некоторые функции статического анализа:

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

2 голосов
/ 13 декабря 2017

Попробуйте мегашек .

megacheck запускает staticcheck, gosimple и не используется одновременно. Поскольку он может повторно использовать работу, это будет быстрее, чем запускать каждый инструмент отдельно.

Код Visual Studio с Плагин Go поддерживает этот инструмент для рисования. Чтобы включить его, перейдите в «Настройки Visual Studio» и установите для свойства go.lintTool значение мегашек .

.
{
  "go.lintTool": "megacheck"
}
...