Я занимаюсь го все время с небольшими перерывами почти последние 3 года. И мне очень нравится язык для тех типов систем, проблем безопасности, параллелизма и производительности, с которыми я постоянно сталкиваюсь. Одна из вещей, которые мне очень нравятся в Go, - это то, как легко написать для него инструмент и насколько сообщество это поощряет. Это благо для разнородной среды разработки, в которой один инженер работает в Vi, в то время как другой - в VS Code, третий - в Goland, третий - в Emacs, все они используют goimports, форматируют код с помощью gofmt, и, как вы скоро увидите, вероятно, используют те же инструменты для статического анализа своего кода.

Гометалинтер

Go Metalinter - это TL; DR-версия этой статьи. Если вам нравится подход дайте мне все с кухонной раковиной, в go metalinter есть достаточно вещей, чтобы проверить наличие всех инструментов. VS Code устанавливает хороший набор инструментов, когда обнаруживает, что вы редактируете проект Go. Вот как можно запускать все инструменты, поставляемые с metalinter.

go get alecthomas/gometalinter
#Install the packages
gometalinter --install
gometalinter ./...

Если вам не нравится подход shebang, я рассмотрю некоторые инструменты в go metalinter и другие.

Газ

Go AST Scanner - отличный проект для выявления проблем безопасности, например, используете ли вы где-то MD5 или rand, а не пакет crypto / rand. Такие вещи.

Вы также можете запустить его относительно быстро

go get github.com/GoASTScanner/gas/cmd/gas/...
gas ./...

Кроме того, вы также можете фильтровать по различным типам ошибок. Если вам нужно использовать что-то, что будет помечено газом, вы можете использовать #nosec, чтобы избежать предупреждения. Как обычно, всегда лучше добавить примечание, почему вы добавляете #nosec для следующего человека.

safesql

Safesql проверяет наличие атак SQL-инъекций - особенно полезно для гарантии того, что некоторые данные, предоставленные пользователем, не будут вызывать атаки SQL-инъекций.

goreportcard

Goreportcard - это для меня сладкий проект тщеславия, когда мне нужно проверить проект с открытым исходным кодом. Вы можете получить веб-страницу с процентной оценкой для вашего проекта на основе нескольких инструментов.

Я проверил отчет на предмет моего последнего значительного соглашения по проекту с открытым исходным кодом, и он упал до 96%. Возможно, это не сделает ваш проект более безопасным в прямом смысле слова, но доведение его до 100% будет приятным.

пройти тест

Один из моих любимых инструментов - это инструмент go vet, встроенный в Go, который теперь ломает ваши тесты с Go 1.10, который обнаружил множество проблем, по крайней мере, в Mist.

охотник на динго

Мне никогда не удавалось запустить охотника на динго на неакадемическом проекте со значительной сложностью, но это статический анализатор для моделирования параллелизма и поиска тупиковых ситуаций в коде Go, основной код для моделей написан на Haskell, и есть некоторые проблемы. математические вычисления, стоящие за этим, и я не хочу делать вид, что понимаю их.

Вы можете проверить еще больше инструментов статического анализа для Go по адресу https://github.com/mre/awesome-static-analysis#go или напишите свой собственный, это довольно просто. :)