Язык программирования Go – компилируемый, строго типизированный, многопоточный язык программирования, созданный компанией Google в 2009 году. Применяется в основном в backend-е web-приложений [1], что не помешало ему попасть в 20 самых популярных языков программирования на момент написания статьи [2, 3].
Разработчики языка старались максимально обезопасить язык от часто допускаемых программистами ошибок. Языком не предусмотрено неявное приведение типов. Все переменные по умолчанию инициализированы нулевым значением, переполнение буфера не приводит к уязвимости, реализован механизм сборки мусора, помогающий бороться с утечками памяти.
Компилятор Go занимается поиском распространенных тривиальных ошибок, например, ситуаций с объявлением переменной, которая нигде не используется. Важным преимуществом языка Go является высокая скорость компиляции, так как при конструировании компилятора на первое место выходит скорость сборки и качество оптимизаций, а не поиск дефектов. Поэтому необходимость дополнительного статического анализа им не устранена.
Чтобы не перегружать компилятор, разработчики языка реализовали открытый статический анализатор go vet, промежуточным представлением анализа которого является абстрактное синтаксическое дерево (АСД) языка Go.