Interprocedural Static Analysis for Finding Bugs in Go Programs

Authors

I. Bolotnikov and A. Borodin

DOI: 10.1134/S0361768821050030
PDF
bibtex

Abstract

In recent years, the popularity of the Go programming language has been growing. However, currently, there are only lightweight static analyzers (linters) available for Go. We fill this gap by adapting the Svace static analyzer for Go programs. We implement an interprocedural and intermodular static analyzer that possesses both flow sensitivity and path sensitivity. To evaluate its performance, we use ten open source projects. The sixteen evaluated checkers emitted 6817 warnings with 76% true positive rate.